Skip to content

Commit e8563bd

Browse files
committed
fix: tuples should not be parsed if multi-value is disabled
1 parent 39eb3f9 commit e8563bd

4 files changed

Lines changed: 20 additions & 2 deletions

File tree

src/parser.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import {
1111
CommonFlags,
12+
Feature,
1213
LIBRARY_PREFIX,
1314
PATH_DELIMITER
1415
} from "./common";
@@ -91,6 +92,7 @@ import {
9192

9293
mangleInternalPath
9394
} from "./ast";
95+
import { Options } from "./compiler";
9496

9597
/** Represents a dependee. */
9698
class Dependee {
@@ -119,7 +121,8 @@ export class Parser extends DiagnosticEmitter {
119121
sources: Source[];
120122
/** Current overridden module name. */
121123
currentModuleName: string | null = null;
122-
124+
/** Temporary variable so I can disable parsing tuples if multi-variable is disabled */
125+
readonly options: Options | null = null;
123126
/** Constructs a new parser. */
124127
constructor(
125128
diagnostics: DiagnosticMessage[] | null = null,
@@ -576,7 +579,7 @@ export class Parser extends DiagnosticEmitter {
576579
}
577580

578581
// '[' Type (',' Type)* ']'
579-
} else if (token == Token.OpenBracket) {
582+
} else if (this.options && this.options.hasFeature(Feature.MultiValue) && token == Token.OpenBracket) {
580583
let elements: TypeNode[] = [];
581584
let elementNames: (IdentifierExpression | null)[] = [];
582585
let hasElementNames = false;

src/program.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,9 @@ export class Program extends DiagnosticEmitter {
442442
let nativeFile = new File(this, Source.native);
443443
this.nativeFile = nativeFile;
444444
this.filesByName.set(nativeFile.internalName, nativeFile);
445+
446+
// temporary fix
447+
this.parser.options = this.options;
445448
}
446449

447450
/** Module instance. */

tests/compiler/tuple-disabled.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"asc_flags": [
3+
"--disable", "multi-value"
4+
],
5+
"stderr": [
6+
"TS1110: Type expected.",
7+
"3 parse error(s)"
8+
]
9+
}

tests/compiler/tuple-disabled.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function tupleDisabled(x: [left: i32, right: i32]): void {}
2+
export type tupleTypeDisabled1 = [i32, i32];
3+
export type tupleTypeDisabled2 = [];

0 commit comments

Comments
 (0)