Skip to content

Commit db06d7e

Browse files
committed
Start autoloading more things
1 parent a8fd78b commit db06d7e

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed

lib/syntax_tree.rb

+8-20
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
require_relative "syntax_tree/formatter"
1111
require_relative "syntax_tree/node"
12-
require_relative "syntax_tree/dsl"
1312
require_relative "syntax_tree/version"
1413

1514
require_relative "syntax_tree/basic_visitor"
@@ -23,36 +22,25 @@
2322
require_relative "syntax_tree/visitor/environment"
2423
require_relative "syntax_tree/visitor/with_environment"
2524

26-
require_relative "syntax_tree/mermaid"
2725
require_relative "syntax_tree/parser"
2826
require_relative "syntax_tree/pattern"
2927
require_relative "syntax_tree/search"
3028
require_relative "syntax_tree/index"
31-
32-
require_relative "syntax_tree/yarv"
33-
require_relative "syntax_tree/yarv/basic_block"
34-
require_relative "syntax_tree/yarv/bf"
35-
require_relative "syntax_tree/yarv/calldata"
36-
require_relative "syntax_tree/yarv/compiler"
37-
require_relative "syntax_tree/yarv/control_flow_graph"
38-
require_relative "syntax_tree/yarv/data_flow_graph"
39-
require_relative "syntax_tree/yarv/decompiler"
40-
require_relative "syntax_tree/yarv/disassembler"
41-
require_relative "syntax_tree/yarv/instruction_sequence"
42-
require_relative "syntax_tree/yarv/instructions"
43-
require_relative "syntax_tree/yarv/legacy"
44-
require_relative "syntax_tree/yarv/local_table"
45-
require_relative "syntax_tree/yarv/sea_of_nodes"
46-
require_relative "syntax_tree/yarv/assembler"
47-
require_relative "syntax_tree/yarv/vm"
48-
4929
require_relative "syntax_tree/translation"
5030

5131
# Syntax Tree is a suite of tools built on top of the internal CRuby parser. It
5232
# provides the ability to generate a syntax tree from source, as well as the
5333
# tools necessary to inspect and manipulate that syntax tree. It can be used to
5434
# build formatters, linters, language servers, and more.
5535
module SyntaxTree
36+
# Syntax Tree the library has many features that aren't always used by the
37+
# CLI. Requiring those features takes time, so we autoload as many constants
38+
# as possible in order to keep the CLI as fast as possible.
39+
40+
autoload :DSL, "syntax_tree/dsl"
41+
autoload :Mermaid, "syntax_tree/mermaid"
42+
autoload :YARV, "syntax_tree/yarv"
43+
5644
# This holds references to objects that respond to both #parse and #format
5745
# so that we can use them in the CLI.
5846
HANDLERS = {}

lib/syntax_tree/yarv.rb

+16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# frozen_string_literal: true
22

3+
require_relative "yarv/basic_block"
4+
require_relative "yarv/bf"
5+
require_relative "yarv/calldata"
6+
require_relative "yarv/compiler"
7+
require_relative "yarv/control_flow_graph"
8+
require_relative "yarv/data_flow_graph"
9+
require_relative "yarv/decompiler"
10+
require_relative "yarv/disassembler"
11+
require_relative "yarv/instruction_sequence"
12+
require_relative "yarv/instructions"
13+
require_relative "yarv/legacy"
14+
require_relative "yarv/local_table"
15+
require_relative "yarv/sea_of_nodes"
16+
require_relative "yarv/assembler"
17+
require_relative "yarv/vm"
18+
319
module SyntaxTree
420
# This module provides an object representation of the YARV bytecode.
521
module YARV

0 commit comments

Comments
 (0)