diff --git a/libs/interpreter/source/exec.cpp b/libs/interpreter/source/exec.cpp index e00885e..38b28a6 100644 --- a/libs/interpreter/source/exec.cpp +++ b/libs/interpreter/source/exec.cpp @@ -194,8 +194,15 @@ namespace pslang::interpreter if (scope.contains(struct_definition.name)) throw std::runtime_error("Identifier \"" + struct_definition.name + "\" is already defined in this scope"); - auto & result = scope.structs[struct_definition.name]; - result.fields = struct_definition.fields; + struct_data result; + for (auto const & field : struct_definition.fields) + { + result.fields.push_back({ + .name = field.name, + .type = std::make_unique(resolve_type(context, *field.type)), + }); + } + scope.structs[struct_definition.name] = std::move(result); } void exec_impl(context & context, ast::statement_list_ptr const & statements)