From 5772408ed0900a9972cd52a566e63b336bd51449 Mon Sep 17 00:00:00 2001 From: Paul Berry Date: Tue, 1 Mar 2016 11:26:39 -0800 Subject: [PATCH] Clear static ElementFactory state at the start of all resolver tests. This prevents the ElementFactory's ClassElement for `Object` (which it stores statically) from getting accidentally shared between separate unit tests in a single test run, which could cause state to leak between the tests. R=brianwilkerson@google.com Review URL: https://codereview.chromium.org/1752023002 . --- .../lib/src/generated/testing/element_factory.dart | 9 +++++++++ pkg/analyzer/test/generated/resolver_test.dart | 1 + 2 files changed, 10 insertions(+) diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart index d5ac50fb1dd..2beeab48e4f 100644 --- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart +++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart @@ -251,6 +251,15 @@ class ElementFactory { Identifier name) => new FieldFormalParameterElementImpl.forNode(name); + /** + * Destroy any static state retained by [ElementFactory]. This should be + * called from the `setUp` method of any tests that use [ElementFactory], in + * order to ensure that state is not shared between multiple tests. + */ + static void flushStaticState() { + _objectElement = null; + } + static FunctionElementImpl functionElement(String functionName) => functionElement4(functionName, null, null, null, null); diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart index 65f38089434..41d96a582d7 100644 --- a/pkg/analyzer/test/generated/resolver_test.dart +++ b/pkg/analyzer/test/generated/resolver_test.dart @@ -8497,6 +8497,7 @@ class ResolverTestCase extends EngineTestCase { @override void setUp() { + ElementFactory.flushStaticState(); super.setUp(); reset(); }