mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-15 00:53:29 +00:00
adfe654733
* Performance improvements Two main changes: 1. Cache parsed AST in a Source. So Parser will parse content only once. 2. Use one unified visitor with multiple callbacks instead of multiple visitors to traverse AST. This improves performance significantly, for example running it on Crystal repository takes ~1 second, which 6 times faster than before. * Change readme example
18 lines
401 B
Crystal
18 lines
401 B
Crystal
require "../../spec_helper"
|
|
|
|
module Ameba::AST
|
|
rule = DummyRule.new
|
|
source = Source.new ""
|
|
|
|
describe "Traverse" do
|
|
{% for name in NODE_VISITORS %}
|
|
describe "{{name}}" do
|
|
it "allow to visit {{name}} node" do
|
|
visitor = Visitor.new rule, source
|
|
nodes = Crystal::Parser.new("").parse
|
|
nodes.accept visitor
|
|
end
|
|
end
|
|
{% end %}
|
|
end
|
|
end
|