mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-21 10:41:42 +00:00
Make sure changetype works
This commit is contained in:
@ -10,7 +10,7 @@ import {
|
||||
Range
|
||||
} from "./tokenizer";
|
||||
|
||||
import{
|
||||
import {
|
||||
CharCode
|
||||
} from "./util/charcode";
|
||||
|
||||
|
@ -694,11 +694,11 @@ export function compileCall(compiler: Compiler, prototype: FunctionPrototype, ty
|
||||
if (!validateCall(compiler, typeArguments, 1, operands, 1, reportNode))
|
||||
return module.createUnreachable();
|
||||
arg0 = compiler.compileExpression(operands[0], Type.void, ConversionKind.NONE);
|
||||
if ((compiler.currentType == usizeType && (<Type[]>typeArguments)[1].classType) || (compiler.currentType.classType && (<Type[]>typeArguments)[1] == usizeType)) {
|
||||
compiler.currentType = (<Type[]>typeArguments)[1];
|
||||
if ((compiler.currentType == usizeType && (<Type[]>typeArguments)[0].classType) || (compiler.currentType.classType && (<Type[]>typeArguments)[0] == usizeType)) {
|
||||
compiler.currentType = (<Type[]>typeArguments)[0];
|
||||
return arg0;
|
||||
}
|
||||
compiler.error(DiagnosticCode.Type_0_cannot_be_changed_to_type_1, reportNode.range, (<Type[]>typeArguments)[0].toString(), (<Type[]>typeArguments)[1].toString());
|
||||
compiler.error(DiagnosticCode.Type_0_cannot_be_changed_to_type_1, reportNode.range, compiler.currentType.toString(), (<Type[]>typeArguments)[0].toString());
|
||||
return module.createUnreachable();
|
||||
|
||||
case "assert": // assert(isTrue: bool) -> void
|
||||
|
@ -1506,7 +1506,17 @@ export class Parser extends DiagnosticEmitter {
|
||||
return Node.createFloatLiteral(tn.readFloat(), tn.range(startPos, tn.pos));
|
||||
|
||||
// RegexpLiteralExpression
|
||||
case Token.REGEXPLITERAL:
|
||||
/*
|
||||
case Token.SLASH:
|
||||
var regexpLit = Node.createRegexpLiteral(tn.readRegexp(), tn.range(startPos, tn.pos));
|
||||
if (!tn.skip(Token.SLASH)) {
|
||||
this.error(DiagnosticCode._0_expected, tn.range(), "/");
|
||||
return null;
|
||||
}
|
||||
// TODO: modifiers, may be move to tokenizer
|
||||
return regexpLit;
|
||||
*/
|
||||
case Token.REGEXPLITERAL: // not yet supported
|
||||
return Node.createRegexpLiteral(tn.readRegexp(), tn.range(startPos, tn.pos));
|
||||
|
||||
default:
|
||||
|
Reference in New Issue
Block a user