diff --git a/CHANGELOG.md b/CHANGELOG.md index 85d383847..973226665 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ * Fix a bug where `**/` would fail to close a loud comment. +* Fix a bug where mixin and function calls could set variables incorrectly. + ## 1.0.0-alpha.4 * Add support for bracketed lists. diff --git a/lib/src/visitor/perform.dart b/lib/src/visitor/perform.dart index 82c7f2082..fa28883d1 100644 --- a/lib/src/visitor/perform.dart +++ b/lib/src/visitor/perform.dart @@ -958,12 +958,13 @@ class _PerformVisitor var declaredArguments = callable.declaration.arguments.arguments; var minLength = math.min(positional.length, declaredArguments.length); for (var i = 0; i < minLength; i++) { - _environment.setVariable(declaredArguments[i].name, positional[i]); + _environment.setLocalVariable( + declaredArguments[i].name, positional[i]); } for (var i = positional.length; i < declaredArguments.length; i++) { var argument = declaredArguments[i]; - _environment.setVariable( + _environment.setLocalVariable( argument.name, named.remove(argument.name) ?? argument.defaultValue?.accept(this)); @@ -980,7 +981,7 @@ class _PerformVisitor separator == ListSeparator.undecided ? ListSeparator.comma : separator); - _environment.setVariable( + _environment.setLocalVariable( callable.declaration.arguments.restArgument, argumentList); }