From 2d26278a658211a9ce6cf6c9d1a8be16ba0e23cb Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 9 Aug 2019 22:52:19 +0100 Subject: [PATCH] Make structs with the same fields but with different tags distinct types --- examples/demo/demo.odin | 1 - src/types.cpp | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/examples/demo/demo.odin b/examples/demo/demo.odin index 21f889746..e07eea7c7 100644 --- a/examples/demo/demo.odin +++ b/examples/demo/demo.odin @@ -955,7 +955,6 @@ struct_field_tags :: proc() { z: bool, // no tag } - f: Foo; ti := runtime.type_info_base(type_info_of(Foo)); s := ti.variant.(runtime.Type_Info_Struct); fmt.println("Foo :: struct {"); diff --git a/src/types.cpp b/src/types.cpp index 1197ba974..4404882a9 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -1712,6 +1712,12 @@ bool are_types_identical(Type *x, Type *y) { if (xf_is_using ^ yf_is_using) { return false; } + if (x->Struct.tags.count != y->Struct.tags.count) { + return false; + } + if (x->Struct.tags.count > 0 && x->Struct.tags[i] != y->Struct.tags[i]) { + return false; + } } return true; }