shard-ameba/spec/ameba/ast/traverse_spec.cr
V. Elenhaupt adfe654733
Performance improvements (#15)
* 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
2017-11-06 20:54:58 +02:00

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