mirror of
https://github.com/github/codeql.git
synced 2026-02-20 08:53:49 +01:00
AST: avoid multivalued results for MethodName::getValueText
This commit is contained in:
@@ -110,6 +110,12 @@ class StringLiteral extends Literal, @string__ {
|
||||
class SymbolLiteral extends Literal {
|
||||
final override SymbolLiteral::Range range;
|
||||
|
||||
SymbolLiteral() {
|
||||
not any(UndefStmt u).getAMethodName() = this and
|
||||
not any(AliasStmt a).getNewName() = this and
|
||||
not any(AliasStmt a).getOldName() = this
|
||||
}
|
||||
|
||||
final override string getAPrimaryQlClass() { result = "SymbolLiteral" }
|
||||
}
|
||||
|
||||
|
||||
@@ -173,27 +173,33 @@ module SymbolLiteral {
|
||||
}
|
||||
|
||||
module MethodName {
|
||||
class Range extends Literal::Range, @underscore_method_name {
|
||||
final override Generated::UnderscoreMethodName generated;
|
||||
private class TokenTypes =
|
||||
@setter or @token_class_variable or @token_constant or @token_global_variable or
|
||||
@token_identifier or @token_instance_variable or @token_operator;
|
||||
|
||||
abstract class Range extends Literal::Range, @underscore_method_name {
|
||||
Range() {
|
||||
exists(Generated::Undef u | u.getChild(_) = generated)
|
||||
or
|
||||
exists(Generated::Alias a | a.getName() = generated or a.getAlias() = generated)
|
||||
}
|
||||
}
|
||||
|
||||
private class TokenMethodName extends MethodName::Range, TokenTypes {
|
||||
final override Generated::UnderscoreMethodName generated;
|
||||
|
||||
final override string getValueText() {
|
||||
result = generated.(Generated::Token).getValue() or
|
||||
result = generated.(SymbolLiteral).getValueText() or
|
||||
result = generated.(Generated::Token).getValue()
|
||||
or
|
||||
result = generated.(Generated::Setter).getName().getValue() + "="
|
||||
}
|
||||
|
||||
final override string toString() {
|
||||
result = getValueText()
|
||||
or
|
||||
not exists(getValueText()) and result = generated.(SymbolLiteral).toString()
|
||||
}
|
||||
}
|
||||
|
||||
private class SimpleSymbolMethodName extends MethodName::Range, SymbolLiteral::SimpleSymbolRange,
|
||||
@token_simple_symbol { }
|
||||
|
||||
private class DelimitedSymbolMethodName extends MethodName::Range,
|
||||
SymbolLiteral::DelimitedSymbolRange, @delimited_symbol { }
|
||||
}
|
||||
|
||||
module StmtSequence {
|
||||
|
||||
@@ -39,9 +39,9 @@ module AliasStmt {
|
||||
class Range extends Stmt::Range, @alias {
|
||||
final override Generated::Alias generated;
|
||||
|
||||
final MethodName getNewName() { result = generated.getAlias() }
|
||||
final MethodName getNewName() { result = generated.getName() }
|
||||
|
||||
final MethodName getOldName() { result = generated.getName() }
|
||||
final MethodName getOldName() { result = generated.getAlias() }
|
||||
|
||||
final override string toString() { result = "alias ..." }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user