diff --git a/source/toy_parser.c b/source/toy_parser.c index d24e346..557be42 100644 --- a/source/toy_parser.c +++ b/source/toy_parser.c @@ -750,25 +750,10 @@ static Toy_Opcode decrementInfix(Toy_Parser* parser, Toy_ASTNode** nodeHandle) { static Toy_Opcode fnCall(Toy_Parser* parser, Toy_ASTNode** nodeHandle) { //wait - is the previous token a type? this should be casting instead if (parser->previous.type >= TOY_TOKEN_NULL && parser->previous.type <= TOY_TOKEN_ANY) { - //casting type - Toy_ASTNode* lhsNode = NULL; - castingPrefix(parser, &lhsNode); - advance(parser); - //casting value - Toy_ASTNode* rhsNode = NULL; - parsePrecedence(parser, &rhsNode, PREC_TERNARY); + parsePrecedence(parser, nodeHandle, PREC_TERM); - //emit the cast node - - Toy_emitASTNodeBinary(&lhsNode, rhsNode, TOY_OP_TYPE_CAST); - - //pass it off to the caller - *nodeHandle = lhsNode; - - consume(parser, TOY_TOKEN_PAREN_RIGHT, "Expected ')' at end of cast grouping"); - - return TOY_OP_GROUPING_BEGIN; //dummy value + return TOY_OP_TYPE_CAST; //opcode value } advance(parser); //skip the left paren diff --git a/test/scripts/group-casting-bugfix.toy b/test/scripts/group-casting-bugfix.toy index 595b338..221daac 100644 --- a/test/scripts/group-casting-bugfix.toy +++ b/test/scripts/group-casting-bugfix.toy @@ -1,7 +1,7 @@ //test for casting + grouping, see #67 { assert string(10 % 4) == "2", "basic group casting failed"; - assert string 4 == "4", "Normal casting failed"; + assert string 4 == "4", "normal casting failed"; assert typeof string(10 % 4) == string, "group casting type failed"; }