mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-07-06 10:01:59 +00:00
Type declaration parsing; Future feature references
This commit is contained in:
@ -37,6 +37,7 @@ import {
|
||||
Modifier,
|
||||
NamespaceDeclaration,
|
||||
Statement,
|
||||
TypeDeclaration,
|
||||
TypeParameter,
|
||||
VariableLikeDeclarationStatement,
|
||||
VariableDeclaration,
|
||||
@ -148,6 +149,10 @@ export class Program extends DiagnosticEmitter {
|
||||
this.initializeNamespace(<NamespaceDeclaration>statement);
|
||||
break;
|
||||
|
||||
case NodeKind.TYPEDECLARATION:
|
||||
this.initializeType(<TypeDeclaration>statement);
|
||||
break;
|
||||
|
||||
case NodeKind.VARIABLE:
|
||||
this.initializeVariables(<VariableStatement>statement);
|
||||
break;
|
||||
@ -641,6 +646,10 @@ export class Program extends DiagnosticEmitter {
|
||||
this.initializeNamespace(<NamespaceDeclaration>members[i], namespace);
|
||||
break;
|
||||
|
||||
case NodeKind.TYPEDECLARATION:
|
||||
this.initializeType(<TypeDeclaration>members[i], namespace);
|
||||
break;
|
||||
|
||||
case NodeKind.VARIABLE:
|
||||
this.initializeVariables(<VariableStatement>members[i], namespace);
|
||||
break;
|
||||
@ -651,6 +660,17 @@ export class Program extends DiagnosticEmitter {
|
||||
}
|
||||
}
|
||||
|
||||
private initializeType(declaration: TypeDeclaration, namespace: Element | null = null): void {
|
||||
// type aliases are program globals
|
||||
const name: string = declaration.name.name;
|
||||
if (this.types.has(name)) {
|
||||
this.error(DiagnosticCode.Duplicate_identifier_0, declaration.name.range, name);
|
||||
return;
|
||||
}
|
||||
// TODO: queue, then resolve
|
||||
throw new Error("not implemented");
|
||||
}
|
||||
|
||||
private initializeVariables(statement: VariableStatement, namespace: Element | null = null): void {
|
||||
const declarations: VariableDeclaration[] = statement.declarations;
|
||||
for (let i: i32 = 0, k: i32 = declarations.length; i < k; ++i) {
|
||||
|
Reference in New Issue
Block a user