Skip to content

Commit fa9ce1e

Browse files
authored
Turns on strict-null-checking in pxtpy/ (microsoft#6125)
* disable eager typechecking of all symbols * fixing strict-null issues in py decompiler * fix null issues in decompiler * fix error numbers * fixing lots of null/undefined issues * null progress on converter * strict null checking progress * finished converter.ts * fixing strict-null * satisfy null checker * fix up some null handling * fix up some null handling * wip * fix some null-strictness checks * allow non-null assert "!" * fixed a few null check issues * standardize py test tasks * fix nullness issues * fix hoisting issues due to nullness stuff * fix nullness in < checks
1 parent 2bcf879 commit fa9ce1e

10 files changed

Lines changed: 393 additions & 226 deletions

File tree

Jakefile.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ function runKarma(that, flags) {
7777

7878
task('default', ['updatestrings', 'built/pxt.js', 'built/pxt.d.ts', 'built/pxtrunner.js', 'built/backendutils.js', 'built/target.js', 'wapp', 'monaco-editor', 'built/web/pxtweb.js', 'built/tests/blocksrunner.js'], { parallelLimit: 10 })
7979

80-
task('test', ['default', 'testfmt', 'testerr', 'testdecompiler', 'testpy', 'testlang', 'testtutorials', 'karma', 'testtraces'])
80+
task('test', ['default', 'testfmt', 'testerr', 'testdecompiler', 'testpy', 'testlang', 'testtutorials', 'karma'])
81+
task('testpy', ['testpycomp', 'testpytraces']) // TODO: turn on 'testpydecomp'
8182

8283
task('clean', function () {
8384
["built", "temp"].forEach(d => {
@@ -96,9 +97,9 @@ setupTest('testdecompiler', 'decompile-test', 'decompilerunner.js')
9697
setupTest('testlang', 'compile-test', 'compilerunner.js')
9798
setupTest('testerr', 'errors-test', 'errorrunner.js')
9899
setupTest('testfmt', 'format-test', 'formatrunner.js')
99-
setupTest('testpydecompiler', 'pydecompile-test', 'pydecompilerunner.js')
100-
setupTest('testpy', 'pyconverter-test', 'pyconvertrunner.js')
101-
setupTest('testtraces', 'runtime-trace-tests', 'tracerunner.js')
100+
setupTest('testpydecomp', 'pydecompile-test', 'pydecompilerunner.js')
101+
setupTest('testpycomp', 'pyconverter-test', 'pyconvertrunner.js')
102+
setupTest('testpytraces', 'runtime-trace-tests', 'tracerunner.js')
102103
setupTest('testtutorials', 'tutorial-test', 'tutorialrunner.js')
103104

104105
task('testpkgconflicts', ['built/pxt.js'], { async: true }, function () {

cli/cli.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5575,7 +5575,7 @@ ${pxt.crowdin.KEY_VARIABLE} - crowdin key
55755575
},
55765576
noBrowser: {
55775577
description: "start the server without launching a browser",
5578-
aliases: ["no-browser"]
5578+
aliases: ["no-browser", "nb"]
55795579
},
55805580
noSerial: {
55815581
description: "do not monitor serial devices",

pxtlib/service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ namespace ts.pxtc {
7575
length: number;
7676

7777
//derived
78-
line: number;
79-
column: number;
78+
line?: number;
79+
column?: number;
8080
endLine?: number;
8181
endColumn?: number;
8282
}

pxtpy/ast.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ namespace pxt.py {
5353

5454
// based on grammar at https://docs.python.org/3/library/ast.html
5555
export interface AST {
56-
startPos?: number;
57-
endPos?: number;
56+
startPos: number;
57+
endPos: number;
5858
kind: string;
5959
}
6060
export interface Stmt extends AST {
@@ -161,7 +161,7 @@ namespace pxt.py {
161161
}
162162

163163
export interface ScopeDef extends Stmt {
164-
vars?: Map<SymbolInfo>;
164+
vars: Map<SymbolInfo>;
165165
parent?: ScopeDef;
166166
blockDepth?: number;
167167
}
@@ -337,7 +337,7 @@ namespace pxt.py {
337337
}
338338
export interface Dict extends Expr {
339339
kind: "Dict";
340-
keys: Expr[];
340+
keys: (Expr | undefined)[];
341341
values: Expr[];
342342
}
343343
export interface Set extends Expr {
@@ -415,7 +415,7 @@ namespace pxt.py {
415415
}
416416
export interface NameConstant extends Expr {
417417
kind: "NameConstant";
418-
value: boolean; // null=None, True, False
418+
value: boolean | undefined; // undefined=None, True, False
419419
}
420420
export interface Ellipsis extends Expr {
421421
kind: "Ellipsis";

0 commit comments

Comments
 (0)