diff options
author | Li Jin <dragon-fly@qq.com> | 2020-06-30 12:15:25 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2020-06-30 12:15:25 +0800 |
commit | 7682305156719aad1397d9eb63e97ecdb8393316 (patch) | |
tree | 824c0e1965b88985d740e63448b1b399665fb977 /src | |
parent | 20df8a965a99593653c9047b7565a29331138ee6 (diff) | |
download | yuescript-7682305156719aad1397d9eb63e97ecdb8393316.tar.gz yuescript-7682305156719aad1397d9eb63e97ecdb8393316.tar.bz2 yuescript-7682305156719aad1397d9eb63e97ecdb8393316.zip |
fix issue when declaring multiple variables with attribute.
Diffstat (limited to 'src')
-rw-r--r-- | src/MoonP/moon_compiler.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/MoonP/moon_compiler.cpp b/src/MoonP/moon_compiler.cpp index 8dc5c94..a3ed4de 100644 --- a/src/MoonP/moon_compiler.cpp +++ b/src/MoonP/moon_compiler.cpp | |||
@@ -5126,6 +5126,7 @@ private: | |||
5126 | auto expList = x->new_ptr<ExpList_t>(); | 5126 | auto expList = x->new_ptr<ExpList_t>(); |
5127 | str_list tmpVars; | 5127 | str_list tmpVars; |
5128 | str_list vars; | 5128 | str_list vars; |
5129 | pushScope(); | ||
5129 | for (auto name : localAttrib->nameList->names.objects()) { | 5130 | for (auto name : localAttrib->nameList->names.objects()) { |
5130 | auto callable = x->new_ptr<Callable_t>(); | 5131 | auto callable = x->new_ptr<Callable_t>(); |
5131 | callable->item.set(name); | 5132 | callable->item.set(name); |
@@ -5136,9 +5137,11 @@ private: | |||
5136 | auto exp = newExp(value, x); | 5137 | auto exp = newExp(value, x); |
5137 | expList->exprs.push_back(exp); | 5138 | expList->exprs.push_back(exp); |
5138 | tmpVars.push_back(getUnusedName("_var_"sv)); | 5139 | tmpVars.push_back(getUnusedName("_var_"sv)); |
5140 | addToScope(tmpVars.back()); | ||
5139 | vars.push_back(_parser.toString(name)); | 5141 | vars.push_back(_parser.toString(name)); |
5140 | } | 5142 | } |
5141 | auto tmpVarStr = join(tmpVars, ","sv); | 5143 | popScope(); |
5144 | auto tmpVarStr = join(tmpVars, ", "sv); | ||
5142 | auto tmpVarList = toAst<ExpList_t>(tmpVarStr, x); | 5145 | auto tmpVarList = toAst<ExpList_t>(tmpVarStr, x); |
5143 | auto assignment = x->new_ptr<ExpListAssign_t>(); | 5146 | auto assignment = x->new_ptr<ExpListAssign_t>(); |
5144 | assignment->expList.set(tmpVarList); | 5147 | assignment->expList.set(tmpVarList); |
@@ -5150,7 +5153,7 @@ private: | |||
5150 | forceAddToScope(var); | 5153 | forceAddToScope(var); |
5151 | var.append(attrib); | 5154 | var.append(attrib); |
5152 | } | 5155 | } |
5153 | temp.push_back(indent() + s("local "sv) + join(vars) + s(" = "sv) + tmpVarStr + nll(x)); | 5156 | temp.push_back(indent() + s("local "sv) + join(vars, ", "sv) + s(" = "sv) + tmpVarStr + nll(x)); |
5154 | out.push_back(join(temp)); | 5157 | out.push_back(join(temp)); |
5155 | } | 5158 | } |
5156 | 5159 | ||