Skip to content

Commit 0f0c8b5

Browse files
committed
feat: add support for typescript 3.2 (angular#27536)
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-2.html https://blogs.msdn.microsoft.com/typescript/2018/11/29/announcing-typescript-3-2/ Any application using tsickle for closure compatibility will need to update it's tsickle dependency to 0.34 PR Close angular#27536
1 parent a840403 commit 0f0c8b5

File tree

13 files changed

+200
-34
lines changed

13 files changed

+200
-34
lines changed

integration/typings_test_ts31/include-all.ts

+25-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9+
10+
11+
import * as animations from '@angular/animations';
12+
import * as animationsBrowser from '@angular/animations/browser';
13+
import * as animationsBrowserTesting from '@angular/animations/browser/testing';
14+
import * as common from '@angular/common';
15+
import * as commonHttp from '@angular/common/http';
16+
import * as commonTesting from '@angular/common/testing';
17+
import * as commonHttpTesting from '@angular/common/testing';
918
import * as compiler from '@angular/compiler';
1019
import * as compilerTesting from '@angular/compiler/testing';
1120
import * as core from '@angular/core';
@@ -15,18 +24,29 @@ import * as forms from '@angular/forms';
1524
import * as http from '@angular/http';
1625
import * as httpTesting from '@angular/http/testing';
1726
import * as platformBrowser from '@angular/platform-browser';
18-
import * as platformBrowserTesting from '@angular/platform-browser/testing';
1927
import * as platformBrowserDynamic from '@angular/platform-browser-dynamic';
28+
import * as platformBrowserDynamicTesting from '@angular/platform-browser-dynamic/testing';
29+
import * as platformBrowserAnimations from '@angular/platform-browser/animations';
30+
import * as platformBrowserTesting from '@angular/platform-browser/testing';
2031
import * as platformServer from '@angular/platform-server';
2132
import * as platformServerTesting from '@angular/platform-server/testing';
2233
import * as platformWebworker from '@angular/platform-webworker';
2334
import * as platformWebworkerDynamic from '@angular/platform-webworker-dynamic';
2435
import * as router from '@angular/router';
2536
import * as routerTesting from '@angular/router/testing';
37+
import * as routerUpgrade from '@angular/router/upgrade';
2638
import * as serviceWorker from '@angular/service-worker';
2739
import * as upgrade from '@angular/upgrade';
40+
import * as upgradeStatic from '@angular/upgrade/static';
2841

2942
export default {
43+
animations,
44+
animationsBrowser,
45+
animationsBrowserTesting,
46+
common,
47+
commonTesting,
48+
commonHttp,
49+
commonHttpTesting,
3050
compiler,
3151
compilerTesting,
3252
core,
@@ -38,12 +58,16 @@ export default {
3858
platformBrowser,
3959
platformBrowserTesting,
4060
platformBrowserDynamic,
61+
platformBrowserDynamicTesting,
62+
platformBrowserAnimations,
4163
platformServer,
4264
platformServerTesting,
4365
platformWebworker,
4466
platformWebworkerDynamic,
4567
router,
4668
routerTesting,
69+
routerUpgrade,
4770
serviceWorker,
4871
upgrade,
72+
upgradeStatic
4973
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/**
2+
* @license
3+
* Copyright Google Inc. All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
9+
10+
11+
import * as animations from '@angular/animations';
12+
import * as animationsBrowser from '@angular/animations/browser';
13+
import * as animationsBrowserTesting from '@angular/animations/browser/testing';
14+
import * as common from '@angular/common';
15+
import * as commonHttp from '@angular/common/http';
16+
import * as commonTesting from '@angular/common/testing';
17+
import * as commonHttpTesting from '@angular/common/testing';
18+
import * as compiler from '@angular/compiler';
19+
import * as compilerTesting from '@angular/compiler/testing';
20+
import * as core from '@angular/core';
21+
import * as coreTesting from '@angular/core/testing';
22+
import * as elements from '@angular/elements';
23+
import * as forms from '@angular/forms';
24+
import * as http from '@angular/http';
25+
import * as httpTesting from '@angular/http/testing';
26+
import * as platformBrowser from '@angular/platform-browser';
27+
import * as platformBrowserDynamic from '@angular/platform-browser-dynamic';
28+
import * as platformBrowserDynamicTesting from '@angular/platform-browser-dynamic/testing';
29+
import * as platformBrowserAnimations from '@angular/platform-browser/animations';
30+
import * as platformBrowserTesting from '@angular/platform-browser/testing';
31+
import * as platformServer from '@angular/platform-server';
32+
import * as platformServerTesting from '@angular/platform-server/testing';
33+
import * as platformWebworker from '@angular/platform-webworker';
34+
import * as platformWebworkerDynamic from '@angular/platform-webworker-dynamic';
35+
import * as router from '@angular/router';
36+
import * as routerTesting from '@angular/router/testing';
37+
import * as routerUpgrade from '@angular/router/upgrade';
38+
import * as serviceWorker from '@angular/service-worker';
39+
import * as upgrade from '@angular/upgrade';
40+
import * as upgradeStatic from '@angular/upgrade/static';
41+
42+
export default {
43+
animations,
44+
animationsBrowser,
45+
animationsBrowserTesting,
46+
common,
47+
commonTesting,
48+
commonHttp,
49+
commonHttpTesting,
50+
compiler,
51+
compilerTesting,
52+
core,
53+
coreTesting,
54+
elements,
55+
forms,
56+
http,
57+
httpTesting,
58+
platformBrowser,
59+
platformBrowserTesting,
60+
platformBrowserDynamic,
61+
platformBrowserDynamicTesting,
62+
platformBrowserAnimations,
63+
platformServer,
64+
platformServerTesting,
65+
platformWebworker,
66+
platformWebworkerDynamic,
67+
router,
68+
routerTesting,
69+
routerUpgrade,
70+
serviceWorker,
71+
upgrade,
72+
upgradeStatic
73+
};
+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"name": "angular-integration",
3+
"description": "Assert that users with TypeScript 3.2 can type-check an Angular application",
4+
"version": "0.0.0",
5+
"license": "MIT",
6+
"dependencies": {
7+
"@angular/animations": "file:../../dist/packages-dist/animations",
8+
"@angular/common": "file:../../dist/packages-dist/common",
9+
"@angular/compiler": "file:../../dist/packages-dist/compiler",
10+
"@angular/compiler-cli": "file:../../dist/packages-dist/compiler-cli",
11+
"@angular/core": "file:../../dist/packages-dist/core",
12+
"@angular/elements": "file:../../dist/packages-dist/elements",
13+
"@angular/forms": "file:../../dist/packages-dist/forms",
14+
"@angular/http": "file:../../dist/packages-dist/http",
15+
"@angular/platform-browser": "file:../../dist/packages-dist/platform-browser",
16+
"@angular/platform-browser-dynamic": "file:../../dist/packages-dist/platform-browser-dynamic",
17+
"@angular/platform-server": "file:../../dist/packages-dist/platform-server",
18+
"@angular/platform-webworker": "file:../../dist/packages-dist/platform-webworker",
19+
"@angular/platform-webworker-dynamic": "file:../../dist/packages-dist/platform-webworker-dynamic",
20+
"@angular/router": "file:../../dist/packages-dist/router",
21+
"@angular/service-worker": "file:../../dist/packages-dist/service-worker",
22+
"@angular/upgrade": "file:../../dist/packages-dist/upgrade",
23+
"@types/jasmine": "2.5.41",
24+
"rxjs": "file:../../node_modules/rxjs",
25+
"typescript": "3.2.x",
26+
"zone.js": "file:../../node_modules/zone.js"
27+
},
28+
"scripts": {
29+
"test": "tsc"
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"compilerOptions": {
3+
"emitDecoratorMetadata": true,
4+
"experimentalDecorators": true,
5+
"module": "commonjs",
6+
"moduleResolution": "node",
7+
"outDir": "../../dist/typings_test_ts31/",
8+
"rootDir": ".",
9+
"target": "es5",
10+
"lib": [
11+
"es5",
12+
"dom",
13+
"es2015.collection",
14+
"es2015.iterable",
15+
"es2015.promise"
16+
],
17+
"types": [],
18+
"strictNullChecks": true
19+
},
20+
"files": [
21+
"include-all.ts",
22+
"node_modules/@types/jasmine/index.d.ts"
23+
]
24+
}

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@
7676
"shelljs": "^0.8.1",
7777
"source-map": "^0.6.1",
7878
"source-map-support": "0.5.9",
79-
"tsickle": "0.33.1",
80-
"tslib": "^1.7.1",
81-
"typescript": "~3.1.1",
79+
"tsickle": "0.34.0",
80+
"tslib": "^1.9.0",
81+
"typescript": "~3.2.2",
8282
"xhr2": "0.1.4",
8383
"yargs": "9.0.1",
8484
"zone.js": "^0.8.26"

packages/bazel/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
},
2525
"peerDependencies": {
2626
"@angular/compiler-cli": "0.0.0-PLACEHOLDER",
27-
"typescript": ">=3.1.1 <3.2"
27+
"typescript": ">=3.1.1 <3.3"
2828
},
2929
"repository": {
3030
"type": "git",
@@ -38,4 +38,4 @@
3838
"scripts": {
3939
"postinstall": "node ./check_version.js"
4040
}
41-
}
41+
}

packages/compiler-cli/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424
},
2525
"peerDependencies": {
2626
"@angular/compiler": "0.0.0-PLACEHOLDER",
27-
"typescript": ">=3.1.1 <3.2"
27+
"typescript": ">=3.1.1 <3.3"
2828
},
29-
"engines" : {
30-
"node" : ">=8.0"
29+
"engines": {
30+
"node": ">=8.0"
3131
},
3232
"repository": {
3333
"type": "git",
@@ -49,4 +49,4 @@
4949
"ng-update": {
5050
"packageGroup": "NG_UPDATE_PACKAGE_GROUP"
5151
}
52-
}
52+
}

packages/compiler-cli/src/ngcc/src/packages/transformer.ts

+14-4
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
import {dirname} from 'canonical-path';
99
import {existsSync, writeFileSync} from 'fs';
1010
import {mkdir, mv} from 'shelljs';
11+
import * as ts from 'typescript';
1112

12-
import {DecorationAnalyzer} from '../analysis/decoration_analyzer';
13+
import {CompiledFile, DecorationAnalyzer} from '../analysis/decoration_analyzer';
1314
import {NgccReferencesRegistry} from '../analysis/ngcc_references_registry';
14-
import {PrivateDeclarationsAnalyzer} from '../analysis/private_declarations_analyzer';
15-
import {SwitchMarkerAnalyzer} from '../analysis/switch_marker_analyzer';
15+
import {ExportInfo, PrivateDeclarationsAnalyzer} from '../analysis/private_declarations_analyzer';
16+
import {SwitchMarkerAnalyses, SwitchMarkerAnalyzer} from '../analysis/switch_marker_analyzer';
1617
import {Esm2015ReflectionHost} from '../host/esm2015_host';
1718
import {Esm5ReflectionHost} from '../host/esm5_host';
1819
import {NgccReflectionHost} from '../host/ngcc_host';
@@ -23,6 +24,7 @@ import {FileInfo, Renderer} from '../rendering/renderer';
2324
import {EntryPoint} from './entry_point';
2425
import {EntryPointBundle} from './entry_point_bundle';
2526

27+
2628
/**
2729
* A Package is stored in a directory on disk and that directory can contain one or more package
2830
* formats - e.g. fesm2015, UMD, etc. Additionally, each package provides typings (`.d.ts` files).
@@ -96,7 +98,8 @@ export class Transformer {
9698
}
9799
}
98100

99-
analyzeProgram(reflectionHost: NgccReflectionHost, isCore: boolean, bundle: EntryPointBundle) {
101+
analyzeProgram(reflectionHost: NgccReflectionHost, isCore: boolean, bundle: EntryPointBundle):
102+
ProgramAnalyses {
100103
const typeChecker = bundle.src.program.getTypeChecker();
101104
const referencesRegistry = new NgccReferencesRegistry(reflectionHost);
102105
const decorationAnalyzer = new DecorationAnalyzer(
@@ -120,3 +123,10 @@ export class Transformer {
120123
writeFileSync(file.path, file.contents, 'utf8');
121124
}
122125
}
126+
127+
128+
interface ProgramAnalyses {
129+
decorationAnalyses: Map<ts.SourceFile, CompiledFile>;
130+
switchMarkerAnalyses: SwitchMarkerAnalyses;
131+
privateDeclarationsAnalyses: ExportInfo[];
132+
}

packages/compiler-cli/src/transformers/program.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ const MIN_TS_VERSION = '3.1.1';
7979
* ∀ supported typescript version v, v < MAX_TS_VERSION
8080
* MAX_TS_VERSION is not considered as a supported TypeScript version
8181
*/
82-
const MAX_TS_VERSION = '3.2.0';
82+
const MAX_TS_VERSION = '3.3.0';
8383

8484
class AngularCompilerProgram implements Program {
8585
private rootNames: string[];

packages/language-service/src/ts_plugin.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -275,18 +275,20 @@ export function create(info: any /* ts.server.PluginCreateInfo */): ts.LanguageS
275275
};
276276

277277
proxy.getDefinitionAtPosition = function(
278-
fileName: string, position: number): ts.DefinitionInfo[] {
278+
fileName: string, position: number): ReadonlyArray<ts.DefinitionInfo> {
279279
let base = oldLS.getDefinitionAtPosition(fileName, position);
280280
if (base && base.length) {
281281
return base;
282282
}
283283

284284
return tryOperation('get definition', () => {
285285
const ours = ls.getDefinitionAt(fileName, position);
286+
let combined;
287+
286288
if (ours && ours.length) {
287-
base = base || [];
289+
combined = base && base.concat([]) || [];
288290
for (const loc of ours) {
289-
base.push({
291+
combined.push({
290292
fileName: loc.fileName,
291293
textSpan: {start: loc.span.start, length: loc.span.end - loc.span.start},
292294
name: '',
@@ -296,8 +298,10 @@ export function create(info: any /* ts.server.PluginCreateInfo */): ts.LanguageS
296298
containerKind: 'file' as any,
297299
});
298300
}
301+
} else {
302+
combined = base;
299303
}
300-
return base;
304+
return combined;
301305
}) || [];
302306
};
303307

tools/ts-api-guardian/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"test": "test"
1212
},
1313
"peerDependencies": {
14-
"typescript": "~3.1.1"
14+
"typescript": "~3.2.2"
1515
},
1616
"dependencies": {
1717
"chalk": "^2.3.1",
@@ -27,7 +27,7 @@
2727
"chai": "^4.1.2",
2828
"jasmine": "^3.1.0",
2929
"source-map-support": "^0.5.9",
30-
"typescript": "~3.1.1"
30+
"typescript": "~3.2.2"
3131
},
3232
"repository": {},
3333
"keywords": [
@@ -45,4 +45,4 @@
4545
"url": "https://github.com/angular/angular/issues"
4646
},
4747
"homepage": "https://github.com/angular/angular/tools/ts-api-guardian"
48-
}
48+
}

tools/ts-api-guardian/yarn.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -224,10 +224,10 @@ type-detect@^4.0.0:
224224
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
225225
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
226226

227-
typescript@~3.1.1:
228-
version "3.1.1"
229-
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.1.tgz#3362ba9dd1e482ebb2355b02dfe8bcd19a2c7c96"
230-
integrity sha512-Veu0w4dTc/9wlWNf2jeRInNodKlcdLgemvPsrNpfu5Pq39sgfFjvIIgTsvUHCoLBnMhPoUA+tFxsXjU6VexVRQ==
227+
typescript@~3.2.2:
228+
version "3.2.2"
229+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5"
230+
integrity sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==
231231

232232
wrappy@1:
233233
version "1.0.2"

0 commit comments

Comments
 (0)