Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » JvmModelInferrer and InferredTypes
JvmModelInferrer and InferredTypes [message #1022422] Thu, 21 March 2013 17:01 Go to previous message
Christian Dietrich is currently offline Christian Dietrich
Messages: 4419
Registered: July 2009
Senior Member
Hi,

i a playing around with xbase' new typesystem.

here is my grammar

Model:
	elements+=Element*;
	
Element:
	"field" name=ID "=" init=XExpression; 


I want to create a javabean out of this. here is my inferrer

class MyDslJvmModelInferrer extends AbstractModelInferrer {

	@Inject extension JvmTypesBuilder
	@Inject extension TypeReferences


	
   	def dispatch void infer(Model model, IJvmDeclaredTypeAcceptor acceptor, boolean isPreIndexingPhase) {
   		acceptor.accept(model.toClass("my.company.greeting.MyGreetings"))
   			.initializeLater([
   				for (e : model.elements.filter(x|x.name != null && x.init != null)) {
   					val f = e.toField(e.name, inferredType) [
   						initializer = e.init
   					]
   					members += f
   					members += e.toGetter(e.name, inferredType(e.init))
   					members += e.toSetter(e.name, inferredType(e.init))
   					
   					
   				}
   			])
   	}
}



somehow the inferring is not working

field xxxx = "aaaa"
@SuppressWarnings("all")
public class MyGreetings {
  private String xxxx = "aaaa";
  
  public Object getXxxx() {
    return this.xxxx;
  }
  
  public void setXxxx(final String xxxx) {
    this.xxxx = xxxx;
  }
}


what am i missing?

another question is: can i use an inferred type without
actually reusing the xexpression the inferrer
(e.g. leave out initializer = e.init)

val f = e.toField(e.name, inferredType(e.init)) []
   					members += f
   					members += e.toGetter(e.name, inferredType(e.init))
   					members += e.toSetter(e.name, inferredType(e.init))

this gives me

Cannot infer type from recursive usage. Type 'Object' is used.

or should i use a "typeprovider" diectly in this case. if so what would be the replacement for the deprecated old one.

Thanks
Christian
 
Read Message
Read Message
Previous Topic:Check Type of Element
Next Topic:Updating completely hosed my environment
Goto Forum:
  


Current Time: Thu May 23 00:41:56 EDT 2013

Powered by FUDForum. Page generated in 0.01613 seconds