diff options
Diffstat (limited to '')
| -rw-r--r-- | spec/inputs/class.yue | 4 | ||||
| -rw-r--r-- | spec/outputs/class.lua | 22 | ||||
| -rwxr-xr-x | src/yuescript/yue_compiler.cpp | 3 |
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 | ||
| 232 | class A using B, C, D | 232 | class A using B, C, D |
| 233 | 233 | ||
| 234 | class Example | ||
| 235 | @field1 = 1 | ||
| 236 | @field2 = @field1 + 1 | ||
| 237 | |||
| 234 | nil | 238 | 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 | |||
| 1054 | _base_0.__class = _class_0 | 1054 | _base_0.__class = _class_0 |
| 1055 | A = _class_0 | 1055 | A = _class_0 |
| 1056 | end | 1056 | end |
| 1057 | do | ||
| 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 | ||
| 1078 | end | ||
| 1057 | return nil | 1079 | 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; | |||
| 60 | 60 | ||
| 61 | typedef std::list<std::string> str_list; | 61 | typedef std::list<std::string> str_list; |
| 62 | 62 | ||
| 63 | const std::string_view version = "0.9.3"sv; | 63 | const std::string_view version = "0.9.4"sv; |
| 64 | const std::string_view extension = "yue"sv; | 64 | const std::string_view extension = "yue"sv; |
| 65 | 65 | ||
| 66 | class YueCompilerImpl { | 66 | class 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)) { |
