Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 350167

Summary: [Xtend2] NPE in validation (forward references)
Product: [Modeling] TMF Reporter: Stephane Barbey <stephane>
Component: XtextAssignee: Project Inbox <tmf.xtext-inbox>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: sebastian.zarnekow
Version: unspecifiedFlags: sebastian.zarnekow: indigo+
Target Milestone: SR1   
Hardware: PC   
OS: Mac OS X - Carbon (unsup.)   
Whiteboard:

Description Stephane Barbey CLA 2011-06-23 12:17:28 EDT
Build Identifier: 

The following example (reduced from DomainModelExtensions.xtend)

package org.eclipse.xtext.example.domainmodel

import org.eclipse.emf.ecore.EObject
import org.eclipse.xtext.common.types.JvmDeclaredType
import org.eclipse.xtext.example.domainmodel.domainmodel.*

class DomainmodelExtensions {

	def String packageName(Object o) {
		switch(o) {
			PackageDeclaration : concatPath(packageName(o.eContainer), o.name)
			EObject : .
			default: null 
		}
	}
	
	def concatPath(String prefix, String suffix) {
        ""
	}
	
}

fails with 

org.eclipse.emf.common.util.WrappedException: java.lang.NullPointerException
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:200)
	at org.eclipse.xtext.xtend2.resource.Xtend2Resource.getEObject(Xtend2Resource.java:74)
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.resolveLazyCrossReference(LazyLinkingResource.java:138)
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.resolveLazyCrossReferences(LazyLinkingResource.java:102)
	at org.eclipse.xtext.EcoreUtil2.resolveLazyCrossReferences(EcoreUtil2.java:417)
	at org.eclipse.xtext.validation.ResourceValidatorImpl.resolveProxies(ResourceValidatorImpl.java:127)
	at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:62)
	at org.eclipse.xtext.ui.editor.validation.ValidationJob$1.exec(ValidationJob.java:79)
	at org.eclipse.xtext.ui.editor.validation.ValidationJob$1.exec(ValidationJob.java:1)
	at org.eclipse.xtext.util.concurrent.AbstractReadWriteAcces.readOnly(AbstractReadWriteAcces.java:32)
	at org.eclipse.xtext.ui.editor.model.XtextDocument.readOnly(XtextDocument.java:86)
	at org.eclipse.xtext.ui.editor.validation.ValidationJob.createIssues(ValidationJob.java:75)
	at org.eclipse.xtext.ui.editor.validation.ValidationJob.run(ValidationJob.java:64)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.NullPointerException
	at org.eclipse.xtext.common.types.util.TypeConformanceComputer.isPrimitiveVoid(TypeConformanceComputer.java:142)
	at org.eclipse.xtext.common.types.util.TypeConformanceComputer.getCommonSuperType(TypeConformanceComputer.java:633)
	at org.eclipse.xtext.xbase.typing.XbaseTypeProvider.getCommonType(XbaseTypeProvider.java:465)
	at org.eclipse.xtext.xbase.typing.XbaseTypeProvider._type(XbaseTypeProvider.java:496)
	at sun.reflect.GeneratedMethodAccessor167.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$2.doComputation(AbstractTypeProvider.java:171)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$2.doComputation(AbstractTypeProvider.java:1)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport$3.get(AbstractTypeProvider.java:444)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport$3.get(AbstractTypeProvider.java:1)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$1.get(AbstractTypeProvider.java:119)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport.getType(AbstractTypeProvider.java:441)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.doGetType(AbstractTypeProvider.java:202)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.getType(AbstractTypeProvider.java:214)
	at org.eclipse.xtext.xbase.scoping.XbaseScopeProvider.createFeatureCallScopeForReceiver(XbaseScopeProvider.java:264)
	at org.eclipse.xtext.xbase.scoping.XbaseScopeProvider.createFeatureCallScope(XbaseScopeProvider.java:216)
	at org.eclipse.xtext.xbase.scoping.XbaseScopeProvider.getScope(XbaseScopeProvider.java:137)
	at org.eclipse.xtext.xbase.annotations.scoping.XbaseWithAnnotationsScopeProvider.getScope(XbaseWithAnnotationsScopeProvider.java:59)
	at org.eclipse.xtext.xtend2.scoping.Xtend2ScopeProvider.getScope(Xtend2ScopeProvider.java:75)
	at org.eclipse.xtext.xbase.linking.XbaseLinkingScopeProvider.getScope(XbaseLinkingScopeProvider.java:38)
	at org.eclipse.xtext.linking.impl.DefaultLinkingService.getScope(DefaultLinkingService.java:59)
	at org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:119)
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:169)
	... 13 more


Reproducible: Always
Comment 1 Sebastian Zarnekow CLA 2011-07-25 10:20:25 EDT
Pushed to master.
Comment 2 Karsten Thoms CLA 2017-09-19 17:03:55 EDT
Closing all bugs that were set to RESOLVED before Neon.0
Comment 3 Karsten Thoms CLA 2017-09-19 17:15:40 EDT
Closing all bugs that were set to RESOLVED before Neon.0