Add support for multiple statements in interpolations

This commit is contained in:
Nick Rolfe
2021-02-23 15:36:14 +00:00
parent 098e0ac142
commit 672148e5b4
11 changed files with 3033 additions and 13 deletions

View File

@@ -121,11 +121,7 @@ module StringInterpolationComponent {
final override string toString() { result = "#{...}" }
final override Stmt getStmt(int n) {
// Generated AST can currently only represent a single statement in an interpolation.
n = 0 and
result = generated.getChild()
}
final override Stmt getStmt(int n) { result = generated.getChild(n) }
final override string getValueText() { none() }

View File

@@ -803,13 +803,13 @@ module Generated {
override Location getLocation() { interpolation_def(this, _, _, result) }
UnderscoreStatement getChild() { interpolation_child(this, result) }
AstNode getChild(int i) { interpolation_child(this, i, result) }
override AstNode getParent() { interpolation_def(this, result, _, _) }
override int getParentIndex() { interpolation_def(this, _, result, _) }
override AstNode getAFieldOrChild() { interpolation_child(this, result) }
override AstNode getAFieldOrChild() { interpolation_child(this, _, result) }
}
class KeywordParameter extends @keyword_parameter, AstNode {

View File

@@ -243,7 +243,7 @@ private module Cached {
or
i = any(Generated::In x).getChild()
or
i = any(Generated::Interpolation x).getChild()
i = any(Generated::Interpolation x).getChild(_)
or
i = any(Generated::KeywordParameter x).getValue()
or