mirror of
https://github.com/github/codeql.git
synced 2026-04-30 11:15:13 +02:00
Revert 8325, Add CharacterLiteral to CompileTimeConstantExpr.getStringValue
As pointed out in 8325's thread, this breaks the corner case of char-literal addition and the convention that getStringValue only applies to String-typed constants.
This commit is contained in:
@@ -168,8 +168,6 @@ class CompileTimeConstantExpr extends Expr {
|
||||
string getStringValue() {
|
||||
result = this.(StringLiteral).getValue()
|
||||
or
|
||||
result = this.(CharacterLiteral).getValue()
|
||||
or
|
||||
result =
|
||||
this.(AddExpr).getLeftOperand().(CompileTimeConstantExpr).getStringValue() +
|
||||
this.(AddExpr).getRightOperand().(CompileTimeConstantExpr).getStringValue()
|
||||
|
||||
@@ -15,4 +15,3 @@
|
||||
| constants/Constants.java:20:22:20:22 | 5 |
|
||||
| constants/Constants.java:20:27:20:27 | 1 |
|
||||
| constants/Constants.java:20:31:20:31 | 2 |
|
||||
| constants/Constants.java:21:22:21:24 | 'a' |
|
||||
|
||||
@@ -66,11 +66,7 @@ constants/Constants.java:
|
||||
# 20| 1: [IntegerLiteral] 5
|
||||
# 20| 1: [IntegerLiteral] 1
|
||||
# 20| 2: [IntegerLiteral] 2
|
||||
# 21| 11: [LocalVariableDeclStmt] var ...;
|
||||
# 21| 0: [TypeAccess] char
|
||||
# 21| 1: [LocalVariableDeclExpr] charLiteral
|
||||
# 21| 0: [CharacterLiteral] 'a'
|
||||
# 23| 12: [ReturnStmt] return ...
|
||||
# 22| 11: [ReturnStmt] return ...
|
||||
constants/Initializers.java:
|
||||
# 0| [CompilationUnit] Initializers
|
||||
# 3| 1: [Class] Initializers
|
||||
@@ -516,13 +512,3 @@ constants/Values.java:
|
||||
# 90| 0: [TypeAccess] int
|
||||
# 90| 1: [LocalVariableDeclExpr] var_nonfinald_local
|
||||
# 90| 0: [VarAccess] var_field
|
||||
# 91| 68: [LocalVariableDeclStmt] var ...;
|
||||
# 91| 0: [TypeAccess] String
|
||||
# 91| 1: [LocalVariableDeclExpr] concatenatedString
|
||||
# 91| 0: [StringLiteral] "a" + "b"
|
||||
# 92| 69: [LocalVariableDeclStmt] var ...;
|
||||
# 92| 0: [TypeAccess] String
|
||||
# 92| 1: [LocalVariableDeclExpr] concatenatedChar
|
||||
# 92| 0: [AddExpr] ... + ...
|
||||
# 92| 0: [StringLiteral] "ab"
|
||||
# 92| 1: [CharacterLiteral] 'c'
|
||||
|
||||
@@ -18,7 +18,6 @@ class Constants {
|
||||
int paren = (12);
|
||||
String string = "a string";
|
||||
int ternary = (3 < 5) ? 1 : 2;
|
||||
char charLiteral = 'a';
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -88,7 +88,5 @@ class Values {
|
||||
int var_local = final_local; //42
|
||||
int var_param = notConstant; //Not constant
|
||||
int var_nonfinald_local = var_field; //Not constant
|
||||
String concatenatedString = "a" + "b"; //ab
|
||||
String concatenatedChar = "ab" + 'c'; //abc
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
| constants/Values.java:19:29:19:31 | '*' | * |
|
||||
| constants/Values.java:91:37:91:45 | "a" + "b" | ab |
|
||||
| constants/Values.java:92:35:92:44 | ... + ... | abc |
|
||||
@@ -1,9 +0,0 @@
|
||||
import semmle.code.java.Variable
|
||||
|
||||
from Variable v, CompileTimeConstantExpr init, RefType enclosing, string constant
|
||||
where
|
||||
v.getInitializer() = init and
|
||||
init.getEnclosingCallable().getDeclaringType() = enclosing and
|
||||
enclosing.hasQualifiedName("constants", "Values") and
|
||||
constant = init.getStringValue()
|
||||
select init, constant
|
||||
Reference in New Issue
Block a user