diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-04-06 11:33:20 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-05-02 14:17:55 +0000 |
commit | 2c23299ecd94dbcce0a90b3b374a674cad6a3683 (patch) | |
tree | a5ade5f3b39685ada7d069b89b86e8b983ee159a /src/qml/compiler/qv4compilercontext.cpp | |
parent | 922e6f42b4fa9b9fa87246c577c13bb945bd4bc4 (diff) |
Cleanup handling of with() statements
Add a CompilerContext for with, whose only purpose it
is to trigger variable lookup by name. This avoids looking
up variables declared inside the with() {} block by name and
we do not lookup variables outside the with block by name
neither anymore.
Change-Id: I52e9fb2daa9601f9e5102714c002dc506ad5ed23
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/compiler/qv4compilercontext.cpp')
-rw-r--r-- | src/qml/compiler/qv4compilercontext.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/qml/compiler/qv4compilercontext.cpp b/src/qml/compiler/qv4compilercontext.cpp index f340d62e52..a0467aa427 100644 --- a/src/qml/compiler/qv4compilercontext.cpp +++ b/src/qml/compiler/qv4compilercontext.cpp @@ -112,7 +112,7 @@ Context::ResolvedName Context::resolveName(const QString &name) ResolvedName result; while (c->parent) { - if (c->forceLookupByName) + if (c->isWithBlock) return result; Context::Member m = c->findMember(name); @@ -148,7 +148,7 @@ Context::ResolvedName Context::resolveName(const QString &name) } // ### can we relax the restrictions here? - if (c->forceLookupByName || contextType == ContextType::Eval || c->contextType == ContextType::Binding) + if (contextType == ContextType::Eval || c->contextType == ContextType::Binding) return result; result.type = ResolvedName::Global; |