Orphan fixes for aggregates

This commit is contained in:
Taus
2021-05-27 16:48:38 +00:00
committed by GitHub
parent fd3abe42bf
commit 2abb79cd57
2 changed files with 18 additions and 2 deletions

View File

@@ -40,6 +40,16 @@ class Select extends TSelect, AstNode {
Select() { this = TSelect(sel) }
VarDecl getVarDecl(int i) { toGenerated(result) = sel.getChild(i) }
Formula getWhere() { toGenerated(result) = sel.getChild(_) }
AsExpr getAsExpr(int i) { toGenerated(result) = sel.getChild(_).(Generated::AsExprs).getChild(i) }
Expr getOrderBy(int i) {
toGenerated(result) = sel.getChild(_).(Generated::OrderBys).getChild(i).getChild(0)
}
override string getAPrimaryQlClass() { result = "Select" }
// TODO: Getters for VarDecls, Where-clause, selects.
}
@@ -79,7 +89,9 @@ class PredicateExpr extends TPredicateExpr, AstNode {
)
}
override ClasslessPredicate getParent() { result.getAlias() = this }
override AstNode getParent() {
this in [result.(ClasslessPredicate).getAlias(), result.(HigherOrderFormula).getInput(_)]
}
override string getAPrimaryQlClass() { result = "PredicateExpr" }
}
@@ -886,6 +898,8 @@ class AsExpr extends TAsExpr, AstNode {
result = super.getParent()
or
result.(Aggregate).getAsExpr(_) = this
or
result.(Select).getAsExpr(_) = this
}
}
@@ -919,6 +933,8 @@ class Expr extends TExpr, AstNode {
result.(Call).getArgument(_) = this
or
result.(Aggregate).getOrderBy(_) = this
or
result.(Select).getOrderBy(_) = this
}
}

View File

@@ -150,4 +150,4 @@ Generated::AstNode toGenerated(AST::AstNode n) {
class TPredicate = TCharPred or TClasslessPredicate or TClassPredicate;
class TModuleMember = TClasslessPredicate or TClass or TModule or TNewType or TImport;
class TModuleMember = TClasslessPredicate or TClass or TModule or TNewType or TImport or TSelect;