Merge pull request #3304 from asger-semmle/js/typescript-unary-type-expr

Approved by erik-krogh
This commit is contained in:
semmle-qlci
2020-04-21 10:38:59 +01:00
committed by GitHub
5 changed files with 19 additions and 1 deletions

View File

@@ -1588,7 +1588,16 @@ public class TypeScriptASTConverter {
}
private Node convertLiteralType(JsonObject node, SourceLocation loc) throws ParseError {
return convertChild(node, "literal");
Node literal = convertChild(node, "literal");
// Convert a negated literal to a negative number
if (literal instanceof UnaryExpression) {
UnaryExpression unary = (UnaryExpression) literal;
if (unary.getOperator().equals("-") && unary.getArgument() instanceof Literal) {
Literal arg = (Literal) unary.getArgument();
literal = new Literal(loc, arg.getTokenType(), "-" + arg.getValue());
}
}
return literal;
}
private Node convertMappedType(JsonObject node, SourceLocation loc) throws ParseError {

View File

@@ -0,0 +1 @@
| tst.ts:1:25:1:26 | -1 | -1 | -1 |

View File

@@ -0,0 +1,4 @@
import javascript
from NumberLiteralTypeExpr t
select t, t.getValue(), t.getIntValue()

View File

@@ -0,0 +1,3 @@
{
"include": ["."]
}

View File

@@ -0,0 +1 @@
type Foo<T> = T extends -1 ? true : false;