Fix module paths not being parsed in type reference expressions

This commit is contained in:
Sam Vervaeck 2022-09-17 16:31:05 +02:00
parent cea177e4a6
commit 9dc62d0836
2 changed files with 14 additions and 2 deletions

View file

@ -1068,7 +1068,7 @@ export class ReferenceTypeExpression extends SyntaxBase {
public readonly kind = SyntaxKind.ReferenceTypeExpression;
public constructor(
public modulePath: Array<[Identifier, Dot]>,
public modulePath: Array<[IdentifierAlt, Dot]>,
public name: IdentifierAlt,
) {
super();

View file

@ -1,4 +1,5 @@
import { warn } from "console";
import {
ReferenceTypeExpression,
SourceFile,
@ -172,8 +173,19 @@ export class Parser {
}
public parseReferenceTypeExpression(): ReferenceTypeExpression {
const modulePath = [];
for (;;) {
const t1 = this.peekToken(1);
const t2 = this.peekToken(2);
if (t1.kind !== SyntaxKind.IdentifierAlt || t2.kind !== SyntaxKind.Dot) {
break;
}
this.getToken();
this.getToken();
modulePath.push([t1, t2] as [IdentifierAlt, Dot]);
}
const name = this.expectToken(SyntaxKind.IdentifierAlt);
return new ReferenceTypeExpression([], name);
return new ReferenceTypeExpression(modulePath, name);
}
public parsePrimitiveTypeExpression(): TypeExpression {