Skip to content

Commit d4c00ea

Browse files
committed
Revised implicit type conversions; Initial function expression compilation
1 parent bda6cb9 commit d4c00ea

36 files changed

+935
-1749
lines changed

dist/asc.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/assemblyscript.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/assemblyscript.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ast.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,7 @@ export abstract class Node {
721721

722722
static createFunctionDeclaration(
723723
name: IdentifierExpression,
724-
typeParameters: TypeParameter[],
724+
typeParameters: TypeParameter[] | null,
725725
parameters: Parameter[],
726726
returnType: TypeNode | null,
727727
body: Statement | null,
@@ -732,7 +732,7 @@ export abstract class Node {
732732
var stmt = new FunctionDeclaration();
733733
stmt.range = range;
734734
stmt.name = name; name.parent = stmt;
735-
stmt.typeParameters = typeParameters; setParent(typeParameters, stmt);
735+
stmt.typeParameters = typeParameters; if (typeParameters) setParent(typeParameters, stmt);
736736
stmt.parameters = parameters; setParent(parameters, stmt);
737737
stmt.returnType = returnType; if (returnType) returnType.parent = stmt;
738738
stmt.body = body; if (body) body.parent = stmt;
@@ -743,7 +743,7 @@ export abstract class Node {
743743

744744
static createMethodDeclaration(
745745
name: IdentifierExpression,
746-
typeParameters: TypeParameter[],
746+
typeParameters: TypeParameter[] | null,
747747
parameters: Parameter[],
748748
returnType: TypeNode | null,
749749
body: Statement | null,
@@ -754,7 +754,7 @@ export abstract class Node {
754754
var stmt = new MethodDeclaration();
755755
stmt.range = range;
756756
stmt.name = name; name.parent = stmt;
757-
stmt.typeParameters = typeParameters; setParent(typeParameters, stmt);
757+
stmt.typeParameters = typeParameters; if (typeParameters) setParent(typeParameters, stmt);
758758
stmt.parameters = parameters; setParent(parameters, stmt);
759759
stmt.returnType = returnType; if (returnType) returnType.parent = stmt;
760760
stmt.body = body; if (body) body.parent = stmt;
@@ -1490,13 +1490,17 @@ export class FunctionDeclaration extends DeclarationStatement {
14901490
kind = NodeKind.FUNCTIONDECLARATION;
14911491

14921492
/** Accepted type parameters. */
1493-
typeParameters: TypeParameter[];
1493+
typeParameters: TypeParameter[] | null;
14941494
/** Accepted parameters. */
14951495
parameters: Parameter[];
14961496
/** Return type. */
14971497
returnType: TypeNode | null;
14981498
/** Body statement. Usually a block. */
14991499
body: Statement | null;
1500+
1501+
get isGeneric(): bool {
1502+
return this.typeParameters != null && this.typeParameters.length > 0;
1503+
}
15001504
}
15011505

15021506
/** Represents an `if` statement. */

src/builtins.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2303,7 +2303,7 @@ function evaluateConstantOffset(compiler: Compiler, expression: Expression): i32
23032303
var expr: ExpressionRef;
23042304
var value: i32;
23052305
if (compiler.options.isWasm64) {
2306-
expr = compiler.precomputeExpression(expression, Type.i64);
2306+
expr = compiler.precomputeExpression(expression, Type.usize64);
23072307
if (
23082308
_BinaryenExpressionGetId(expr) != ExpressionId.Const ||
23092309
_BinaryenExpressionGetType(expr) != NativeType.I64 ||
@@ -2317,7 +2317,7 @@ function evaluateConstantOffset(compiler: Compiler, expression: Expression): i32
23172317
value = -1;
23182318
}
23192319
} else {
2320-
expr = compiler.precomputeExpression(expression, Type.i32);
2320+
expr = compiler.precomputeExpression(expression, Type.usize32);
23212321
if (
23222322
_BinaryenExpressionGetId(expr) != ExpressionId.Const ||
23232323
_BinaryenExpressionGetType(expr) != NativeType.I32 ||

0 commit comments

Comments
 (0)