Browse Source

Fix `ast_end_token` for `[?]T` types

gingerBill 4 years ago
parent
commit
47f9e8f850
1 changed files with 5 additions and 1 deletions
  1. 5 1
      src/parser_pos.cpp

+ 5 - 1
src/parser_pos.cpp

@@ -147,7 +147,11 @@ Token ast_end_token(Ast *node) {
 			return ast_end_token(node->TagExpr.expr);
 			return ast_end_token(node->TagExpr.expr);
 		}
 		}
 		return node->TagExpr.name;
 		return node->TagExpr.name;
-	case Ast_UnaryExpr:     return ast_end_token(node->UnaryExpr.expr);
+	case Ast_UnaryExpr:
+		if (node->UnaryExpr.expr) {
+			return ast_end_token(node->UnaryExpr.expr);
+		}
+		return node->UnaryExpr.op;
 	case Ast_BinaryExpr:    return ast_end_token(node->BinaryExpr.right);
 	case Ast_BinaryExpr:    return ast_end_token(node->BinaryExpr.right);
 	case Ast_ParenExpr:     return node->ParenExpr.close;
 	case Ast_ParenExpr:     return node->ParenExpr.close;
 	case Ast_CallExpr:      return node->CallExpr.close;
 	case Ast_CallExpr:      return node->CallExpr.close;