Skip to content

Commit b1a0c3b

Browse files
fix: compiler crashed when callback signature has void as parameter
1 parent 52b9533 commit b1a0c3b

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

src/resolver.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,15 @@ export class Resolver extends DiagnosticEmitter {
417417
reportMode
418418
);
419419
if (!parameterType) return null;
420+
if (parameterType == Type.void) {
421+
if (reportMode == ReportMode.Report) {
422+
this.error(
423+
DiagnosticCode.Type_0_is_illegal_in_this_context,
424+
parameterTypeNode.range, parameterType.toString()
425+
);
426+
}
427+
return null;
428+
}
420429
parameterTypes[i] = parameterType;
421430
}
422431
let returnTypeNode = node.returnType;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"asc_flags": [],
3+
"stderr": [
4+
"AS214: Type 'void' is illegal in this context.",
5+
"EOF"
6+
]
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class C1<T> {
2+
then(cb: (value: T) => void): void {}
3+
}
4+
5+
new C1<void>().then(function (): void {});
6+
7+
ERROR("EOF");

0 commit comments

Comments
 (0)