Tom Hvitved
08225181c8
Introduce Expr::getValueText
2021-10-01 11:03:46 +02:00
Tom Hvitved
30d2df53c6
Include MethodCall.getAChild in {Unary,Binary}Operation.getAChild
2021-09-24 12:08:54 +02:00
Tom Hvitved
edfdfb1fa4
Make {Unary,Binary}Operation a sub class of MethodCall
2021-09-23 19:13:55 +02:00
Tom Hvitved
888183f26d
Desugar array literals to ::Array.[]
2021-09-21 21:27:29 +02:00
Nick Rolfe
ec13133317
Automatically extract .gemspec and Gemfile files
...
They are just Ruby code, after all.
2021-09-14 18:23:57 +01:00
Alex Ford
d84731bcc7
Add a library for working with the ERB AST
2021-08-31 16:24:38 +01:00
Arthur Baars
ac2c315839
Fix merge conflicts during rebase
2021-08-26 18:48:53 -04:00
Tom Hvitved
394c27a279
CFG: Allow erb top-level scopes
2021-08-17 10:46:15 +02:00
Arthur Baars
00a0b93172
Add erb file
2021-07-29 19:09:56 +02:00
Tom Hvitved
9463927409
Address review comments
2021-07-14 11:05:55 +02:00
Tom Hvitved
23447e6d58
Reduce size of lookupMethodOrConst
2021-07-02 14:02:26 +02:00
Tom Hvitved
bf696df788
Data flow through constants
2021-07-02 14:02:26 +02:00
Tom Hvitved
3b6e5881c8
Update constants.rb test
2021-07-02 14:02:26 +02:00
Nick Rolfe
9ec503a3a5
Merge remote-tracking branch 'origin/main' into regex
2021-06-24 18:16:13 +01:00
Nick Rolfe
51b0ffdaf8
Fix printAst to support adding edges in AstDesugar test
2021-06-24 17:14:23 +01:00
Tom Hvitved
1dde5b8ef9
AST synthesis: Move location information into a separate predicate
2021-06-23 08:46:07 +02:00
Nick Rolfe
65aa97c07c
Use RegExp prefix instead of Regex, for consistency with other languages.
2021-06-18 15:56:19 +01:00
Tom Hvitved
962768e7c0
Disambiguate toStrings for nested synthetic local variables
2021-06-04 19:20:11 +02:00
Tom Hvitved
6678ac0347
Desugar compound assignments
2021-06-04 10:39:06 +02:00
Tom Hvitved
da9adfbab4
Improve performance of desugaring transformations
2021-06-04 10:34:00 +02:00
Tom Hvitved
1007f2aaff
Rename (Hash)SplatArgument to (Hash)SplatExpr and make them UnaryOperations
2021-06-04 10:04:06 +02:00
Tom Hvitved
372f8645a9
Add (hash)splat AST tests
2021-06-04 09:53:14 +02:00
Tom Hvitved
908e9ff3b5
Include desugared node in AstDesugar.ql
2021-06-03 14:46:32 +02:00
Tom Hvitved
3ffef634d7
More synthesis refactoring
...
- Join `TElementReferenceSynth` and `TMethodCallSynth`.
- Move arity and setter information into `MethodCallKind`.
- Add `Synthesis::methodCall` for specifying which method calls need synthesis.
2021-05-31 16:29:41 +02:00
Tom Hvitved
f8b99291a7
Improve desugaring of setter assignments
2021-05-26 18:41:21 +02:00
Tom Hvitved
abcabeef06
Remove *Real predicates and enable recursive desugaring
2021-05-25 21:27:39 +02:00
Tom Hvitved
3f412e4fad
Desugar setter assignment operations
2021-05-25 21:27:39 +02:00
Tom Hvitved
b173cc332a
Desugar setter assignments
2021-05-25 21:27:39 +02:00
Tom Hvitved
e85677a040
Adjust locations of synthesized AST nodes
2021-05-25 21:27:34 +02:00
Tom Hvitved
ff06e724b1
AST synthesis framework
2021-05-12 19:58:52 +02:00
Tom Hvitved
ea1c7b51ef
Add more operator assignment tests
2021-05-12 17:24:11 +02:00
Nick Rolfe
f3852f9b56
Create synthetic self nodes for calls without explicit receivers
2021-04-28 16:43:40 +01:00
Arthur Baars
549e5ab9d6
Revert "Rename Method -> MethodDeclaration"
...
This reverts commit d361ef37af .
2021-04-21 10:50:47 +02:00
Arthur Baars
1245674df8
Add missing @id properties
2021-04-21 10:50:47 +02:00
Arthur Baars
07726fd979
Add some module and method tests
2021-04-16 11:07:57 +02:00
Arthur Baars
d361ef37af
Rename Method -> MethodDeclaration
2021-04-15 11:32:43 +02:00
Arthur Baars
24bb11b20a
Improve module/class resolution
2021-04-14 17:14:38 +02:00
Arthur Baars
12ee957331
Add test cases
2021-04-14 17:12:39 +02:00
Arthur Baars
754bfdd136
Ignore include/prepend statements in blocks
...
Include and prepend statements are rarely used in block in normal code and when
used in normal code they tend to be in blocks that are passed to methods like
`module_eval` which is a builtin method that evaluates a block in the context
of some other module (typically created with Module.new). We currently don't attempt
to track such "dynamically" constructed modules, and ignoring such modules
and the `module_eval` calls on them seems fine for now.
Another, much more frequent use of include/prepend statements in blocks is in Rspec.describe and
Rspec.context method calls in tests. Rspec also evaluates those blocks in the context of some
special Rspec class. Precisely tracking such calls during the initial construction of the module/class
hierarchy would be really hard and there would be little benefit because the interesting modules and classes of
an application are not defined in test files.
2021-04-14 09:53:19 +02:00
Arthur Baars
280fe73063
Add test case with 'module_eval' call with block containing 'prepend' statement
2021-04-14 09:53:19 +02:00
Arthur Baars
2db999d0da
Improve module resolution
2021-04-09 09:51:24 +02:00
Arthur Baars
039e8b36a5
Add some include/prepend tests
2021-04-07 17:27:33 +02:00
Arthur Baars
063b085078
Address comments
2021-04-07 15:57:13 +02:00
Arthur Baars
f12e6ea8ea
Avoid 'Object::' prefixes
2021-03-30 16:14:21 +02:00
Arthur Baars
b2c7185664
Add tests
2021-03-30 15:49:41 +02:00
Arthur Baars
eebbc7e505
AST: rename Class/Module to ClassDefinition/ModuleDefinition
2021-03-30 15:40:01 +02:00
Tom Hvitved
0bb5007103
Reintroduce hidden then/else/do in AST; include all in CFG
2021-03-25 14:22:35 +01:00
Tom Hvitved
58ecd771d3
AST: Exclude empty then/else/do statements
2021-03-25 09:53:55 +01:00
Tom Hvitved
e175513293
Remove duplicate tuple patterns
2021-03-19 10:52:29 +01:00
Nick Rolfe
32e2b257bf
Port CFG implementation to public AST interface
2021-03-17 20:28:47 +00:00