From 718b80ba398b8980c37f79dded101bcf20d187d2 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 20 May 2018 17:39:49 +0100 Subject: [PATCH] Fix demo for removing default struct values --- core/math.odin | 5 ++++- examples/demo.odin | 2 +- src/parser.cpp | 5 ++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/core/math.odin b/core/math.odin index 53592b8b7..c67cc731b 100644 --- a/core/math.odin +++ b/core/math.odin @@ -23,7 +23,10 @@ Mat2 :: distinct [2][2]f32; Mat3 :: distinct [3][3]f32; Mat4 :: distinct [4][4]f32; -Quat :: struct {x, y, z: f32, w: f32 = 1}; +Quat :: struct {x, y, z, w: f32}; + +QUAT_IDENTITY := Quat{x = 0, y = 0, z = 0, w = 1}; + @(default_calling_convention="c") foreign __llvm_core { diff --git a/examples/demo.odin b/examples/demo.odin index 6327ee360..e0894baa5 100644 --- a/examples/demo.odin +++ b/examples/demo.odin @@ -154,7 +154,7 @@ union_type :: proc() { } Vector3 :: struct {x, y, z: f32}; - Quaternion :: struct {x, y, z: f32, w: f32 = 1}; + Quaternion :: struct {x, y, z, w: f32}; // More realistic examples { diff --git a/src/parser.cpp b/src/parser.cpp index c32af2427..1fcc7140d 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -2889,7 +2889,7 @@ AstNode *parse_struct_field_list(AstFile *f, isize *name_count_) { isize total_name_count = 0; - AstNode *params = parse_field_list(f, &total_name_count, FieldFlag_Struct, Token_CloseBrace, true, false); + AstNode *params = parse_field_list(f, &total_name_count, FieldFlag_Struct, Token_CloseBrace, false, false); if (name_count_) *name_count_ = total_name_count; return params; } @@ -2948,7 +2948,6 @@ AstNode *parse_field_list(AstFile *f, isize *name_count_, u32 allowed_flags, Tok } if (allow_token(f, Token_Eq)) { - // TODO(bill): Should this be true==lhs or false==rhs? default_value = parse_expr(f, false); if (!allow_default_parameters) { syntax_error(f->curr_token, "Default parameters are only allowed for procedures"); @@ -3001,10 +3000,10 @@ AstNode *parse_field_list(AstFile *f, isize *name_count_, u32 allowed_flags, Tok } if (allow_token(f, Token_Eq)) { - // TODO(bill): Should this be true==lhs or false==rhs? default_value = parse_expr(f, false); if (!allow_default_parameters) { syntax_error(f->curr_token, "Default parameters are only allowed for procedures"); + default_value = nullptr; } }