From 2138d176edfe1f8ba3ecee211f15825e97f0570a Mon Sep 17 00:00:00 2001 From: Li Jin <dragon-fly@qq.com> Date: Fri, 17 Dec 2021 16:38:41 +0800 Subject: fix an new issue found by the example from issue #72 --- spec/inputs/class.yue | 4 ++++ spec/outputs/class.lua | 22 ++++++++++++++++++++++ src/yuescript/yue_compiler.cpp | 3 ++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/spec/inputs/class.yue b/spec/inputs/class.yue index ea971e1..82dbef6 100644 --- a/spec/inputs/class.yue +++ b/spec/inputs/class.yue @@ -231,4 +231,8 @@ class extends lapis.Application class A using B, C, D +class Example + @field1 = 1 + @field2 = @field1 + 1 + nil diff --git a/spec/outputs/class.lua b/spec/outputs/class.lua index 20b18ea..85845d3 100644 --- a/spec/outputs/class.lua +++ b/spec/outputs/class.lua @@ -1054,4 +1054,26 @@ do _base_0.__class = _class_0 A = _class_0 end +do + local _class_0 + local _base_0 = { } + _base_0.__index = _base_0 + _class_0 = setmetatable({ + __init = function() end, + __base = _base_0, + __name = "Example" + }, { + __index = _base_0, + __call = function(cls, ...) + local _self_0 = setmetatable({ }, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + local self = _class_0; + self.field1 = 1 + self.field2 = self.field1 + 1 + Example = _class_0 +end return nil diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index e93324e..15a785a 100755 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp @@ -60,7 +60,7 @@ using namespace parserlib; typedef std::list<std::string> str_list; -const std::string_view version = "0.9.3"sv; +const std::string_view version = "0.9.4"sv; const std::string_view extension = "yue"sv; class YueCompilerImpl { @@ -5141,6 +5141,7 @@ private: auto exp = ast_cast<Exp_t>(assign->values.objects().front()); BREAK_IF(!exp); auto value = singleValueFrom(exp); + BREAK_IF(!value); clsDecl = value->getByPath<SimpleValue_t, ClassDecl_t>(); BLOCK_END } else if (auto expList = expListFrom(statement)) { -- cgit v1.2.3-55-g6feb