From 55936532c295a3eea221ac6aaca7353f41761c76 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 19 Jul 2010 19:24:31 +0200 Subject: [PATCH] Disable the copy of SemanticEnvironment. --- src/libs/cplusplus/CppRewriter.cpp | 14 +++++++------- src/libs/cplusplus/CppRewriter.h | 7 +++++-- src/libs/cplusplus/ResolveExpression.cpp | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/libs/cplusplus/CppRewriter.cpp b/src/libs/cplusplus/CppRewriter.cpp index 2dcec18a419..26c11596ddb 100644 --- a/src/libs/cplusplus/CppRewriter.cpp +++ b/src/libs/cplusplus/CppRewriter.cpp @@ -43,7 +43,7 @@ using namespace CPlusPlus; class CPlusPlus::Rewrite { public: - Rewrite(Control *control, const SubstitutionEnvironment &env) + Rewrite(Control *control, SubstitutionEnvironment *env) : control(control), env(env), rewriteType(this), rewriteName(this) {} class RewriteType: public TypeVisitor @@ -118,7 +118,7 @@ public: virtual void visit(NamedType *type) { - FullySpecifiedType ty = rewrite->env.apply(type->name(), rewrite); + FullySpecifiedType ty = rewrite->env->apply(type->name(), rewrite); if (! ty->isUndefinedType()) temps.append(rewrite->rewriteType(ty)); else { @@ -281,7 +281,7 @@ public: public: // attributes Control *control; - SubstitutionEnvironment env; + SubstitutionEnvironment *env; RewriteType rewriteType; RewriteName rewriteName; }; @@ -309,9 +309,9 @@ FullySpecifiedType ContextSubstitution::apply(const Name *name, Rewrite *rewrite << r.scope()->owner()->column(); ContextSubstitution subst(_context, s->scope()); - rewrite->env.enter(&subst); + rewrite->env->enter(&subst); FullySpecifiedType ty = rewrite->rewriteType(s->type()); - rewrite->env.leave(); + rewrite->env->leave(); return ty; } @@ -348,7 +348,7 @@ FullySpecifiedType SubstitutionMap::apply(const Name *name, Rewrite *) const } FullySpecifiedType CPlusPlus::rewriteType(const FullySpecifiedType &type, - const SubstitutionEnvironment &env, + SubstitutionEnvironment *env, Control *control) { Rewrite rewrite(control, env); @@ -356,7 +356,7 @@ FullySpecifiedType CPlusPlus::rewriteType(const FullySpecifiedType &type, } const Name *CPlusPlus::rewriteName(const Name *name, - const SubstitutionEnvironment &env, + SubstitutionEnvironment *env, Control *control) { Rewrite rewrite(control, env); diff --git a/src/libs/cplusplus/CppRewriter.h b/src/libs/cplusplus/CppRewriter.h index 4e6d14b3f5a..0e210611281 100644 --- a/src/libs/cplusplus/CppRewriter.h +++ b/src/libs/cplusplus/CppRewriter.h @@ -50,9 +50,12 @@ public: class CPLUSPLUS_EXPORT SubstitutionEnvironment { + Q_DISABLE_COPY(SubstitutionEnvironment) QList<Substitution *> substs; public: + SubstitutionEnvironment() {} + FullySpecifiedType apply(const Name *name, Rewrite *rewrite) const { if (name) { @@ -107,11 +110,11 @@ private: }; CPLUSPLUS_EXPORT FullySpecifiedType rewriteType(const FullySpecifiedType &type, - const SubstitutionEnvironment &env, + SubstitutionEnvironment *env, Control *control); CPLUSPLUS_EXPORT const Name *rewriteName(const Name *name, - const SubstitutionEnvironment &env, + SubstitutionEnvironment *env, Control *control); } // end of namespace CPlusPlus diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp index 3f2ae7ac82e..651af198717 100644 --- a/src/libs/cplusplus/ResolveExpression.cpp +++ b/src/libs/cplusplus/ResolveExpression.cpp @@ -572,7 +572,7 @@ QList<LookupItem> ResolveExpression::getMembers(ClassOrNamespace *binding, const env.enter(&ctxSubst); env.enter(&map); - FullySpecifiedType instantiatedTy = rewriteType(decl->type(), env, _context.control().data()); + FullySpecifiedType instantiatedTy = rewriteType(decl->type(), &env, _context.control().data()); Overview oo; oo.setShowReturnTypes(true); -- GitLab