mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-16 00:11:28 +00:00
More std array
This commit is contained in:
@ -2469,7 +2469,7 @@ export class Compiler extends DiagnosticEmitter {
|
||||
|
||||
} else { // too few arguments
|
||||
this.error(DiagnosticCode.Expected_at_least_0_arguments_but_got_1, reportNode.range,
|
||||
(operandIndex + numParametersInclThis - numParameters).toString(10),
|
||||
(operandIndex + numParameters - numParametersInclThis).toString(10),
|
||||
numArguments.toString(10)
|
||||
);
|
||||
return this.module.createUnreachable();
|
||||
@ -2686,7 +2686,7 @@ export class Compiler extends DiagnosticEmitter {
|
||||
case ElementKind.PROPERTY: // instance property (here: getter)
|
||||
var getter = (<Property>element).getterPrototype;
|
||||
assert(getter != null);
|
||||
var getterInstance = (<FunctionPrototype>getter).resolve(); // reports
|
||||
var getterInstance = (<FunctionPrototype>getter).resolve(null); // reports
|
||||
if (!getterInstance)
|
||||
return this.module.createUnreachable();
|
||||
assert(getterInstance.parameters.length == 0);
|
||||
|
@ -564,7 +564,7 @@ export class Parser extends DiagnosticEmitter {
|
||||
}
|
||||
var initializer: Expression | null = null;
|
||||
if (tn.skip(Token.EQUALS)) {
|
||||
initializer = this.parseExpression(tn);
|
||||
initializer = this.parseExpression(tn, Precedence.COMMA + 1);
|
||||
if (!initializer)
|
||||
return null;
|
||||
}
|
||||
|
@ -1562,7 +1562,7 @@ export class FunctionPrototype extends Element {
|
||||
if (typeNode = declaration.parameters[i].type) {
|
||||
var parameterType = this.program.resolveType(typeNode, contextualTypeArguments, true); // reports
|
||||
if (parameterType) {
|
||||
parameters[i] = new Parameter(declaration.parameters[i].name.name, parameterType);
|
||||
parameters[i] = new Parameter(declaration.parameters[i].name.name, parameterType, declaration.parameters[i].initializer);
|
||||
parameterTypes[i] = parameterType;
|
||||
} else
|
||||
return null;
|
||||
@ -2006,10 +2006,15 @@ export class ClassPrototype extends Element {
|
||||
instance.members.set(member.simpleName, methodPrototype);
|
||||
break;
|
||||
|
||||
case ElementKind.PROPERTY: // instance properties are just copied because there is nothing to partially-resolve
|
||||
case ElementKind.PROPERTY: // instance properties are cloned with partially resolved getters and setters
|
||||
if (!instance.members)
|
||||
instance.members = new Map();
|
||||
instance.members.set(member.simpleName, member);
|
||||
assert((<Property>member).getterPrototype);
|
||||
var instanceProperty = new Property(this.program, member.simpleName, member.internalName, this);
|
||||
instanceProperty.getterPrototype = (<FunctionPrototype>(<Property>member).getterPrototype).resolvePartial(typeArguments);
|
||||
if ((<Property>member).setterPrototype)
|
||||
instanceProperty.setterPrototype = (<FunctionPrototype>(<Property>member).setterPrototype).resolvePartial(typeArguments);
|
||||
instance.members.set(member.simpleName, instanceProperty);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
Reference in New Issue
Block a user