aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2021-12-17 16:38:41 +0800
committerLi Jin <dragon-fly@qq.com>2021-12-17 16:38:41 +0800
commit2138d176edfe1f8ba3ecee211f15825e97f0570a (patch)
tree9769ce3fe4234a17309fd26e8527da6f26a0197e
parent59852b14368bd3609b1c6e3e469cd4af111e4562 (diff)
downloadyuescript-2138d176edfe1f8ba3ecee211f15825e97f0570a.tar.gz
yuescript-2138d176edfe1f8ba3ecee211f15825e97f0570a.tar.bz2
yuescript-2138d176edfe1f8ba3ecee211f15825e97f0570a.zip
fix an new issue found by the example from issue #72
-rw-r--r--spec/inputs/class.yue4
-rw-r--r--spec/outputs/class.lua22
-rwxr-xr-xsrc/yuescript/yue_compiler.cpp3
3 files changed, 28 insertions, 1 deletions
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
231 231
232class A using B, C, D 232class A using B, C, D
233 233
234class Example
235 @field1 = 1
236 @field2 = @field1 + 1
237
234nil 238nil
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
1054 _base_0.__class = _class_0 1054 _base_0.__class = _class_0
1055 A = _class_0 1055 A = _class_0
1056end 1056end
1057do
1058 local _class_0
1059 local _base_0 = { }
1060 _base_0.__index = _base_0
1061 _class_0 = setmetatable({
1062 __init = function() end,
1063 __base = _base_0,
1064 __name = "Example"
1065 }, {
1066 __index = _base_0,
1067 __call = function(cls, ...)
1068 local _self_0 = setmetatable({ }, _base_0)
1069 cls.__init(_self_0, ...)
1070 return _self_0
1071 end
1072 })
1073 _base_0.__class = _class_0
1074 local self = _class_0;
1075 self.field1 = 1
1076 self.field2 = self.field1 + 1
1077 Example = _class_0
1078end
1057return nil 1079return 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;
60 60
61typedef std::list<std::string> str_list; 61typedef std::list<std::string> str_list;
62 62
63const std::string_view version = "0.9.3"sv; 63const std::string_view version = "0.9.4"sv;
64const std::string_view extension = "yue"sv; 64const std::string_view extension = "yue"sv;
65 65
66class YueCompilerImpl { 66class YueCompilerImpl {
@@ -5141,6 +5141,7 @@ private:
5141 auto exp = ast_cast<Exp_t>(assign->values.objects().front()); 5141 auto exp = ast_cast<Exp_t>(assign->values.objects().front());
5142 BREAK_IF(!exp); 5142 BREAK_IF(!exp);
5143 auto value = singleValueFrom(exp); 5143 auto value = singleValueFrom(exp);
5144 BREAK_IF(!value);
5144 clsDecl = value->getByPath<SimpleValue_t, ClassDecl_t>(); 5145 clsDecl = value->getByPath<SimpleValue_t, ClassDecl_t>();
5145 BLOCK_END 5146 BLOCK_END
5146 } else if (auto expList = expListFrom(statement)) { 5147 } else if (auto expList = expListFrom(statement)) {