Skip to content

Commit 27bc698

Browse files
authored
Merge pull request #10184 from erik-krogh/ts48
JavaScript: Update to TypeScript 4.8
2 parents e26a7fc + 56292ca commit 27bc698

File tree

11 files changed

+236
-49
lines changed

11 files changed

+236
-49
lines changed

docs/codeql/support/reusables/versions-compilers.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [6]_"
2424
Python,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10",Not applicable,``.py``
2525
Ruby [7]_,"up to 3.0.2",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``"
26-
TypeScript [8]_,"2.6-4.7",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``"
26+
TypeScript [8]_,"2.6-4.8",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``"
2727

2828
.. container:: footnote-group
2929

javascript/extractor/lib/typescript/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "typescript-parser-wrapper",
33
"private": true,
44
"dependencies": {
5-
"typescript": "4.7.2"
5+
"typescript": "4.8.2"
66
},
77
"scripts": {
88
"build": "tsc --project tsconfig.json",

javascript/extractor/lib/typescript/src/main.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ const astProperties: string[] = [
241241
"constructor",
242242
"declarationList",
243243
"declarations",
244-
"decorators",
244+
"illegalDecorators",
245245
"default",
246246
"delete",
247247
"dotDotDotToken",

javascript/extractor/lib/typescript/src/type_table.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -947,7 +947,7 @@ export class TypeTable {
947947
* Returns a unique string for the given call/constructor signature.
948948
*/
949949
private getSignatureString(kind: ts.SignatureKind, signature: AugmentedSignature): string {
950-
let modifiers : ts.ModifiersArray = signature.getDeclaration()?.modifiers;
950+
let modifiers = signature.getDeclaration()?.modifiers;
951951
let isAbstract = modifiers && modifiers.filter(modifier => modifier.kind == ts.SyntaxKind.AbstractKeyword).length > 0
952952

953953
let parameters = signature.getParameters();

javascript/extractor/lib/typescript/yarn.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
version "12.7.11"
77
resolved node-12.7.11.tgz#be879b52031cfb5d295b047f5462d8ef1a716446
88

9-
typescript@4.7.2:
10-
version "4.7.2"
11-
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4"
12-
integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==
9+
typescript@4.8.2:
10+
version "4.8.2"
11+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.2.tgz#e3b33d5ccfb5914e4eeab6699cf208adee3fd790"
12+
integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==

javascript/extractor/src/com/semmle/js/extractor/Main.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public class Main {
4141
* A version identifier that should be updated every time the extractor changes in such a way that
4242
* it may produce different tuples for the same file under the same {@link ExtractorConfig}.
4343
*/
44-
public static final String EXTRACTOR_VERSION = "2022-07-11";
44+
public static final String EXTRACTOR_VERSION = "2022-08-25";
4545

4646
public static final Pattern NEWLINE = Pattern.compile("\n");
4747

javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java

+22-8
Original file line numberDiff line numberDiff line change
@@ -976,8 +976,9 @@ private Node convertClass(JsonObject node, String kind, SourceLocation loc) thro
976976
hasDeclareKeyword,
977977
hasAbstractKeyword);
978978
attachSymbolInformation(classDecl.getClassDef(), node);
979-
if (node.has("decorators")) {
980-
classDecl.addDecorators(convertChildren(node, "decorators"));
979+
List<Decorator> decorators = getDecorators(node);
980+
if (!decorators.isEmpty()) {
981+
classDecl.addDecorators(decorators);
981982
advanceUntilAfter(loc, classDecl.getDecorators());
982983
}
983984
Node exportedDecl = fixExports(loc, classDecl);
@@ -989,6 +990,17 @@ private Node convertClass(JsonObject node, String kind, SourceLocation loc) thro
989990
return exportedDecl;
990991
}
991992

993+
List<Decorator> getDecorators(JsonObject node) throws ParseError {
994+
List<Decorator> result = new ArrayList<>();
995+
for (JsonElement elt : getChildIterable(node, "modifiers")) {
996+
JsonObject modifier = elt.getAsJsonObject();
997+
if (hasKind(modifier, "Decorator")) {
998+
result.add((Decorator) convertNode(modifier));
999+
}
1000+
}
1001+
return result;
1002+
}
1003+
9921004
private Node convertCommaListExpression(JsonObject node, SourceLocation loc) throws ParseError {
9931005
return new SequenceExpression(loc, convertChildren(node, "elements"));
9941006
}
@@ -1041,7 +1053,7 @@ private DecoratorList makeDecoratorList(JsonElement decorators) throws ParseErro
10411053
private List<DecoratorList> convertParameterDecorators(JsonObject function) throws ParseError {
10421054
List<DecoratorList> decoratorLists = new ArrayList<>();
10431055
for (JsonElement parameter : getProperParameters(function)) {
1044-
decoratorLists.add(makeDecoratorList(parameter.getAsJsonObject().get("decorators")));
1056+
decoratorLists.add(makeDecoratorList(parameter.getAsJsonObject().get("modifiers")));
10451057
}
10461058
return decoratorLists;
10471059
}
@@ -1139,7 +1151,7 @@ private Node convertEnumDeclaration(JsonObject node, SourceLocation loc) throws
11391151
loc,
11401152
hasModifier(node, "ConstKeyword"),
11411153
hasModifier(node, "DeclareKeyword"),
1142-
convertChildrenNotNull(node, "decorators"),
1154+
convertChildrenNotNull(node, "illegalDecorators"), // as of https://github.com/microsoft/TypeScript/pull/50343/ the property is called `illegalDecorators` instead of `decorators`
11431155
convertChild(node, "name"),
11441156
convertChildren(node, "members"));
11451157
attachSymbolInformation(enumDeclaration, node);
@@ -1664,8 +1676,9 @@ private Node convertMethodDeclaration(JsonObject node, String kind, SourceLocati
16641676
FunctionExpression method = convertImplicitFunction(node, loc);
16651677
MethodDefinition methodDefinition =
16661678
new MethodDefinition(loc, flags, methodKind, convertChild(node, "name"), method);
1667-
if (node.has("decorators")) {
1668-
methodDefinition.addDecorators(convertChildren(node, "decorators"));
1679+
List<Decorator> decorators = getDecorators(node);
1680+
if (!decorators.isEmpty()) {
1681+
methodDefinition.addDecorators(decorators);
16691682
advanceUntilAfter(loc, methodDefinition.getDecorators());
16701683
}
16711684
return methodDefinition;
@@ -2079,8 +2092,9 @@ private Node convertPropertyDeclaration(JsonObject node, String kind, SourceLoca
20792092
convertChild(node, "name"),
20802093
convertChild(node, "initializer"),
20812094
convertChildAsType(node, "type"));
2082-
if (node.has("decorators")) {
2083-
fieldDefinition.addDecorators(convertChildren(node, "decorators"));
2095+
List<Decorator> decorators = getDecorators(node);
2096+
if (!decorators.isEmpty()) {
2097+
fieldDefinition.addDecorators(decorators);
20842098
advanceUntilAfter(loc, fieldDefinition.getDecorators());
20852099
}
20862100
return fieldDefinition;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: majorAnalysis
3+
---
4+
* Added support for TypeScript 4.8.

0 commit comments

Comments
 (0)