diff --git a/org.eclipse.xtext.xbase/src/org/eclipse/xtext/xbase/resource/BatchLinkableResource.java b/org.eclipse.xtext.xbase/src/org/eclipse/xtext/xbase/resource/BatchLinkableResource.java index 6ffe292cfc5..322549d5a28 100644 --- a/org.eclipse.xtext.xbase/src/org/eclipse/xtext/xbase/resource/BatchLinkableResource.java +++ b/org.eclipse.xtext.xbase/src/org/eclipse/xtext/xbase/resource/BatchLinkableResource.java @@ -220,7 +220,7 @@ public void ensureJvmMembersInitialized() { LinkedHashSet> before = resolving; try { eSetDeliver(false); - if (!before.isEmpty()) { + if (before != null && !before.isEmpty()) { resolving = new LinkedHashSet>(); } if (isInitializingJvmMembers) { @@ -237,7 +237,7 @@ public void ensureJvmMembersInitialized() { } catch (Exception e) { log.error(e.getMessage(), e); } finally { - if (!before.isEmpty()) { + if (before != null && !before.isEmpty()) { resolving = before; } eSetDeliver(wasDeliver); diff --git a/org.eclipse.xtext/src/org/eclipse/xtext/linking/lazy/LazyLinkingResource.java b/org.eclipse.xtext/src/org/eclipse/xtext/linking/lazy/LazyLinkingResource.java index e1a7bb92325..2867b00391d 100644 --- a/org.eclipse.xtext/src/org/eclipse/xtext/linking/lazy/LazyLinkingResource.java +++ b/org.eclipse.xtext/src/org/eclipse/xtext/linking/lazy/LazyLinkingResource.java @@ -124,7 +124,7 @@ protected void doLinking() { /** * @since 2.4 */ - protected LinkedHashSet> resolving = Sets.newLinkedHashSet(); + protected LinkedHashSet> resolving; /** * resolves any lazy cross references in this resource, adding Issues for unresolvable elements to this resource. @@ -250,6 +250,9 @@ public synchronized EObject getEObject(String uriFragment) { protected EObject getEObject(String uriFragment, Triple triple) throws AssertionError { cyclicLinkingDetectionCounter++; if (cyclicLinkingDetectionCounter > cyclicLinkingDectectionCounterLimit) { + if (resolving == null) { + resolving = Sets.newLinkedHashSet(); + } if (!resolving.add(triple)) { return handleCyclicResolution(triple); }