Skip to content

Commit

Permalink
Fix NPE when generating code for aspects
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomas Degueule committed Feb 6, 2015
1 parent 9f412be commit 70529c4
Showing 1 changed file with 35 additions and 16 deletions.
Expand Up @@ -20,6 +20,7 @@ import org.eclipse.emf.ecore.EClass
import org.eclipse.emf.ecore.EEnum

import org.eclipse.xtext.common.types.JvmDeclaredType
import org.eclipse.xtext.common.types.JvmTypeReference
import org.eclipse.xtext.common.types.JvmVisibility
import org.eclipse.xtext.common.types.TypesFactory

Expand Down Expand Up @@ -273,15 +274,21 @@ class MetaclassAdapterInferrer
«IF inherited»
«mm.adapterNameFor(superMM, cls)» clsAdaptee = new «mm.adapterNameFor(superMM, cls)»() ;
clsAdaptee.setAdaptee(adaptee) ;
«IF retType.type.simpleName != "void" && retType.type.simpleName != "null"»
return adaptersFactory.create«superMM.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«IF retType.isValidReturnType»
«IF mm.hasAdapterFor(superType, retType.type.simpleName)»
return adaptersFactory.create«superMM.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«ELSE»
return «asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
«ELSE»
«asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
«ELSEIF mm.hasAdapterFor(superType, retType?.type?.simpleName)»
return adaptersFactory.create«mm.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«ELSEIF retType.type.simpleName != "void" && retType.type.simpleName != "null"»
return «asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ELSEIF retType.isValidReturnType»
«IF mm.hasAdapterFor(superType, retType?.type?.simpleName)»
return adaptersFactory.create«mm.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«ELSE»
return «asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
«ELSE»
«asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
Expand All @@ -307,15 +314,21 @@ class MetaclassAdapterInferrer
«IF inherited»
«mm.adapterNameFor(superMM, cls)» clsAdaptee = new «mm.adapterNameFor(superMM, cls)»() ;
clsAdaptee.setAdaptee(adaptee) ;
«IF retType.type.simpleName != "void"»
return adaptersFactory.create«superMM.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«IF retType.isValidReturnType»
«IF mm.hasAdapterFor(superType, retType.type.simpleName)»
return adaptersFactory.create«superMM.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«ELSE»
return «asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
«ELSE»
«asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
«ELSEIF mm.hasAdapterFor(superType, retType.type.simpleName)»
return adaptersFactory.create«mm.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«ELSEIF retType.type.simpleName != "void"»
return «asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ELSEIF retType.isValidReturnType»
«IF mm.hasAdapterFor(superType, retType.type.simpleName)»
return adaptersFactory.create«mm.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«ELSE»
return «asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
«ELSE»
«asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
Expand All @@ -337,7 +350,7 @@ class MetaclassAdapterInferrer
«IF inherited»
«mm.adapterNameFor(superMM, cls)» clsAdaptee = new «mm.adapterNameFor(superMM, cls)»() ;
clsAdaptee.setAdaptee(adaptee) ;
«IF retType.type.simpleName != "void"»
«IF retType.isValidReturnType»
«IF mm.hasAdapterFor(superType, retType.type.simpleName)»
return adaptersFactory.create«superMM.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«ELSE»
Expand All @@ -346,10 +359,12 @@ class MetaclassAdapterInferrer
«ELSE»
«asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
«ELSEIF mm.hasAdapterFor(superType, retType.type.simpleName)»
return adaptersFactory.create«mm.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«ELSEIF retType.type.simpleName != "void"»
«ELSEIF retType.isValidReturnType»
«IF mm.hasAdapterFor(superType, retType.type.simpleName)»
return adaptersFactory.create«mm.simpleAdapterNameFor(superType, retType.type.simpleName)»(«asp.qualifiedName».«op.simpleName»(«paramsList»)) ;
«ELSE»
return «asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
«ELSE»
«asp.qualifiedName».«op.simpleName»(«paramsList») ;
«ENDIF»
Expand All @@ -364,6 +379,10 @@ class MetaclassAdapterInferrer
task.stop
}

private def boolean isValidReturnType(JvmTypeReference ref) {
return ref.type !== null && ref.type.simpleName != "void" && ref.type.simpleName != "null"
}

/*def boolean +=(EList<JvmMember> members, JvmOperation m) {
if (!members.filter(JvmOperation).exists[overrides(m)])
members += (m as JvmMember)
Expand Down

0 comments on commit 70529c4

Please sign in to comment.