mirror of
https://github.com/github/codeql.git
synced 2026-05-02 04:05:14 +02:00
Address review comments
This commit is contained in:
@@ -77,12 +77,12 @@ private int parseInteger(Ruby::Integer i) {
|
||||
v = values.indexOf(c.toLowerCase()) and
|
||||
exp = str.replaceAll("_", "").length() - index - 1
|
||||
|
|
||||
v * values.length().pow(exp)
|
||||
v * values.length().pow(exp).floor()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private class RequiredIntegerConstantValue extends RequiredConstantValue {
|
||||
private class RequiredIntegerLiteralConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredInt(int i) { i = any(IntegerLiteral il).getValue() }
|
||||
}
|
||||
|
||||
@@ -277,7 +277,7 @@ private class FalseLiteral extends BooleanLiteral, TFalseLiteral {
|
||||
final override predicate isFalse() { any() }
|
||||
}
|
||||
|
||||
private class RequiredStringConstantValue extends RequiredConstantValue {
|
||||
private class RequiredEncodingLiteralConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredString(string s) { s = "UTF-8" }
|
||||
}
|
||||
|
||||
@@ -293,7 +293,7 @@ class EncodingLiteral extends Literal, TEncoding {
|
||||
override ConstantValue::ConstantStringValue getConstantValue() { result.isString("UTF-8") }
|
||||
}
|
||||
|
||||
private class RequiredIntegerConstantValue2 extends RequiredConstantValue {
|
||||
private class RequiredLineLiteralConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredInt(int i) { i = any(LineLiteral ll).getLocation().getStartLine() }
|
||||
}
|
||||
|
||||
@@ -310,7 +310,7 @@ class LineLiteral extends Literal, TLine {
|
||||
}
|
||||
}
|
||||
|
||||
private class RequiredStringConstantValue2 extends RequiredConstantValue {
|
||||
private class RequiredFileLiteralConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredString(string s) {
|
||||
s = any(FileLiteral fl).getLocation().getFile().getAbsolutePath()
|
||||
}
|
||||
@@ -346,7 +346,7 @@ class StringComponent extends AstNode, TStringComponent {
|
||||
ConstantValue::ConstantStringValue getConstantValue() { none() }
|
||||
}
|
||||
|
||||
private class RequiredStringConstantValue3 extends RequiredConstantValue {
|
||||
private class RequiredStringTextComponentConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredString(string s) {
|
||||
s = any(Ruby::Token t | exists(TStringTextComponentNonRegexp(t))).getValue()
|
||||
}
|
||||
@@ -378,7 +378,7 @@ class StringTextComponent extends StringComponent, TStringTextComponentNonRegexp
|
||||
final override string getAPrimaryQlClass() { result = "StringTextComponent" }
|
||||
}
|
||||
|
||||
private class RequiredStringConstantValue4 extends RequiredConstantValue {
|
||||
private class RequiredStringEscapeSequenceComponentConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredString(string s) {
|
||||
s = any(Ruby::Token t | exists(TStringEscapeSequenceComponentNonRegexp(t))).getValue()
|
||||
}
|
||||
@@ -450,7 +450,7 @@ private string getRegExpTextComponentValue(RegExpTextComponent c) {
|
||||
)
|
||||
}
|
||||
|
||||
private class RequiredStringConstantValue5 extends RequiredConstantValue {
|
||||
private class RequiredRegExpTextComponentConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredString(string s) { s = getRegExpTextComponentValue(_) }
|
||||
}
|
||||
|
||||
@@ -490,7 +490,7 @@ private string getRegExpEscapeSequenceComponentValue(RegExpEscapeSequenceCompone
|
||||
)
|
||||
}
|
||||
|
||||
private class RequiredStringConstantValue6 extends RequiredConstantValue {
|
||||
private class RequiredRegExpEscapeSequenceComponentConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredString(string s) { s = getRegExpEscapeSequenceComponentValue(_) }
|
||||
}
|
||||
|
||||
@@ -761,7 +761,7 @@ class SymbolLiteral extends StringlikeLiteral, TSymbolLiteral {
|
||||
// Tree-sitter gives us value text including the colon, which we skip.
|
||||
private string getSimpleSymbolValue(Ruby::SimpleSymbol ss) { result = ss.getValue().suffix(1) }
|
||||
|
||||
private class RequiredSymbolConstantValue extends RequiredConstantValue {
|
||||
private class RequiredSimpleSymbolConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredSymbol(string s) { s = getSimpleSymbolValue(_) }
|
||||
}
|
||||
|
||||
@@ -795,7 +795,7 @@ private class BareSymbolLiteral extends ComplexSymbolLiteral, TBareSymbolLiteral
|
||||
final override StringComponent getComponent(int i) { toGenerated(result) = g.getChild(i) }
|
||||
}
|
||||
|
||||
private class RequiredSymbolConstantValue2 extends RequiredConstantValue {
|
||||
private class RequiredHashKeySymbolConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredSymbol(string s) { s = any(Ruby::HashKeySymbol h).getValue() }
|
||||
}
|
||||
|
||||
@@ -829,7 +829,7 @@ class SubshellLiteral extends StringlikeLiteral, TSubshellLiteral {
|
||||
final override StringComponent getComponent(int i) { toGenerated(result) = g.getChild(i) }
|
||||
}
|
||||
|
||||
private class RequiredStringConstantValue7 extends RequiredConstantValue {
|
||||
private class RequiredCharacterConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredString(string s) { s = any(Ruby::Character c).getValue() }
|
||||
}
|
||||
|
||||
@@ -1131,7 +1131,7 @@ private string getMethodName(MethodName::Token t) {
|
||||
result = t.(Ruby::Setter).getName().getValue() + "="
|
||||
}
|
||||
|
||||
private class RequiredStringConstantValue8 extends RequiredConstantValue {
|
||||
private class RequiredMethodNameConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredString(string s) { s = getMethodName(_) }
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,10 @@ newtype TConstantValue =
|
||||
|
||||
private newtype TRequiredConstantValue = MkRequiredConstantValue()
|
||||
|
||||
/**
|
||||
* A class that exists for QL technical reasons only (the IPA type used
|
||||
* to represent constant values needs to be bounded).
|
||||
*/
|
||||
class RequiredConstantValue extends MkRequiredConstantValue {
|
||||
string toString() { none() }
|
||||
|
||||
|
||||
@@ -272,6 +272,7 @@ module ExprNodes {
|
||||
final ExprCfgNode getOperand() { e.hasCfgChild(uo.getOperand(), this, result) }
|
||||
|
||||
final override ConstantValue getConstantValue() {
|
||||
// TODO: Implement support for complex numbers and rational numbers
|
||||
exists(string op, ConstantValue value | unaryConstFold(this, op, value) |
|
||||
op = "+" and
|
||||
result = value
|
||||
@@ -373,6 +374,7 @@ module ExprNodes {
|
||||
final ExprCfgNode getRightOperand() { e.hasCfgChild(bo.getRightOperand(), this, result) }
|
||||
|
||||
final override ConstantValue getConstantValue() {
|
||||
// TODO: Implement support for complex numbers and rational numbers
|
||||
exists(string op, ConstantValue left, ConstantValue right |
|
||||
binaryConstFold(this, op, left, right)
|
||||
|
|
||||
@@ -642,7 +644,7 @@ module ExprNodes {
|
||||
)
|
||||
}
|
||||
|
||||
private class RequiredStringConstantValue extends RequiredConstantValue {
|
||||
private class RequiredStringlikeLiteralConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredString(string s) {
|
||||
exists(StringlikeLiteralCfgNode n |
|
||||
s = getStringlikeLiteralCfgNodeValue(n) and
|
||||
@@ -703,7 +705,7 @@ module ExprNodes {
|
||||
)
|
||||
}
|
||||
|
||||
private class RequiredStringConstantValue2 extends RequiredConstantValue {
|
||||
private class RequiredRexExpLiteralConstantValue extends RequiredConstantValue {
|
||||
override predicate requiredString(string s) { s = getRegExpLiteralCfgNodeValue(_) }
|
||||
}
|
||||
|
||||
|
||||
@@ -367,6 +367,8 @@
|
||||
| literals/literals.rb:12:1:12:1 | 0 | 0 |
|
||||
| literals/literals.rb:13:1:13:5 | 0d900 | 0 |
|
||||
| literals/literals.rb:16:1:16:6 | 0x1234 | 4660 |
|
||||
| literals/literals.rb:17:1:17:10 | 0xdeadbeef | -559038737 |
|
||||
| literals/literals.rb:18:1:18:11 | 0xF00D_face | -267519282 |
|
||||
| literals/literals.rb:21:1:21:4 | 0123 | 83 |
|
||||
| literals/literals.rb:22:1:22:5 | 0o234 | 156 |
|
||||
| literals/literals.rb:23:1:23:6 | 0O45_6 | 302 |
|
||||
|
||||
@@ -10,8 +10,8 @@ allLiterals
|
||||
| literals.rb:12:1:12:1 | 0 | IntegerLiteral | 0 |
|
||||
| literals.rb:13:1:13:5 | 0d900 | IntegerLiteral | 0 |
|
||||
| literals.rb:16:1:16:6 | 0x1234 | IntegerLiteral | 4660 |
|
||||
| literals.rb:17:1:17:10 | 0xdeadbeef | IntegerLiteral | <none> |
|
||||
| literals.rb:18:1:18:11 | 0xF00D_face | IntegerLiteral | <none> |
|
||||
| literals.rb:17:1:17:10 | 0xdeadbeef | IntegerLiteral | -559038737 |
|
||||
| literals.rb:18:1:18:11 | 0xF00D_face | IntegerLiteral | -267519282 |
|
||||
| literals.rb:21:1:21:4 | 0123 | IntegerLiteral | 83 |
|
||||
| literals.rb:22:1:22:5 | 0o234 | IntegerLiteral | 156 |
|
||||
| literals.rb:23:1:23:6 | 0O45_6 | IntegerLiteral | 302 |
|
||||
@@ -739,8 +739,8 @@ numericLiterals
|
||||
| literals.rb:12:1:12:1 | 0 | IntegerLiteral | 0 |
|
||||
| literals.rb:13:1:13:5 | 0d900 | IntegerLiteral | 0 |
|
||||
| literals.rb:16:1:16:6 | 0x1234 | IntegerLiteral | 4660 |
|
||||
| literals.rb:17:1:17:10 | 0xdeadbeef | IntegerLiteral | <none> |
|
||||
| literals.rb:18:1:18:11 | 0xF00D_face | IntegerLiteral | <none> |
|
||||
| literals.rb:17:1:17:10 | 0xdeadbeef | IntegerLiteral | -559038737 |
|
||||
| literals.rb:18:1:18:11 | 0xF00D_face | IntegerLiteral | -267519282 |
|
||||
| literals.rb:21:1:21:4 | 0123 | IntegerLiteral | 83 |
|
||||
| literals.rb:22:1:22:5 | 0o234 | IntegerLiteral | 156 |
|
||||
| literals.rb:23:1:23:6 | 0O45_6 | IntegerLiteral | 302 |
|
||||
@@ -808,8 +808,8 @@ integerLiterals
|
||||
| literals.rb:12:1:12:1 | 0 | IntegerLiteral | 0 |
|
||||
| literals.rb:13:1:13:5 | 0d900 | IntegerLiteral | 0 |
|
||||
| literals.rb:16:1:16:6 | 0x1234 | IntegerLiteral | 4660 |
|
||||
| literals.rb:17:1:17:10 | 0xdeadbeef | IntegerLiteral | <none> |
|
||||
| literals.rb:18:1:18:11 | 0xF00D_face | IntegerLiteral | <none> |
|
||||
| literals.rb:17:1:17:10 | 0xdeadbeef | IntegerLiteral | -559038737 |
|
||||
| literals.rb:18:1:18:11 | 0xF00D_face | IntegerLiteral | -267519282 |
|
||||
| literals.rb:21:1:21:4 | 0123 | IntegerLiteral | 83 |
|
||||
| literals.rb:22:1:22:5 | 0o234 | IntegerLiteral | 156 |
|
||||
| literals.rb:23:1:23:6 | 0O45_6 | IntegerLiteral | 302 |
|
||||
|
||||
Reference in New Issue
Block a user