Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » [Xbase 2.6] Generating from XAnnotation leads to NullPointerException
[Xbase 2.6] Generating from XAnnotation leads to NullPointerException [message #1386067] Fri, 13 June 2014 10:22 Go to next message
Boris Brodski is currently offline Boris BrodskiFriend
Messages: 112
Registered: July 2009
Senior Member
Hello,

converting my Xbase DSL to Xtext 2.6 I stuck with the following problem:

In my grammar:

grammar my.myDsl with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
...
MyRule:
     ...
     (customAnnotations += XAnnotation)*
      ...
;


In Inferrer:

    ...
    members += methodDefinition.toMethod(...) [
        myRule.customAnnotations.translateAnnotationsTo(it)
        ...
    ]


In DSL

    @Override


works, but

    @SuppressWarnings("all")


throws NullPointerException in

public class LiteralsCompiler extends TypeConvertingCompiler {
    protected void toJavaExpression(XStringLiteral literal, ITreeAppendable appendable, boolean useUnicodeEscapes) {
        LightweightTypeReference type = getLightweightType(literal);

       // type is NULL
       // literal is XStringLiteralImpl (value: all)

Should I invoke type resolution somehow?

Thank you!

Cheers,
Boris Brodski



PS
Full Stacktrace:
java.lang.RuntimeException: java.lang.NullPointerException
	at ...MyCompilationTestHelper.compile(MyCompilationTestHelper.java:153)
	at ...MyCompilationTestHelper.compile(MyCompilationTestHelper.java:89)
	at ...CompilerTest.testCustomAnnotationsTwoAnnotations(CompilerTest.java:6149)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.eclipse.xtext.junit4.XtextRunner$1.evaluate(XtextRunner.java:49)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.NullPointerException
	at org.eclipse.xtext.xbase.compiler.LiteralsCompiler.toJavaExpression(LiteralsCompiler.java:79)
	at org.eclipse.xtext.xbase.compiler.LiteralsCompiler._toJavaExpression(LiteralsCompiler.java:71)
	at org.eclipse.xtext.xbase.compiler.LiteralsCompiler.internalToConvertedExpression(LiteralsCompiler.java:39)
	at org.eclipse.xtext.xbase.compiler.FeatureCallCompiler.internalToConvertedExpression(FeatureCallCompiler.java:94)
	at org.eclipse.xtext.xbase.compiler.XbaseCompiler.internalToConvertedExpression(XbaseCompiler.java:354)
	at org.eclipse.xtext.xbase.compiler.TypeConvertingCompiler.internalToConvertedExpression(TypeConvertingCompiler.java:89)
	at org.eclipse.xtext.xbase.compiler.TypeConvertingCompiler.internalToJavaExpression(TypeConvertingCompiler.java:47)
	at org.eclipse.xtext.xbase.compiler.AbstractXbaseCompiler.toJavaExpression(AbstractXbaseCompiler.java:473)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator$43.apply(JvmModelGenerator.java:1835)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator$43.apply(JvmModelGenerator.java:1)
	at org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_doubleArrow(ObjectExtensions.java:139)
	at org.eclipse.xtext.xbase.compiler.LoopExtensions.forEachWithShortcut(LoopExtensions.java:54)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator._toJavaLiteral(JvmModelGenerator.java:1838)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.toJavaLiteral(JvmModelGenerator.java:2024)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.toJava(JvmModelGenerator.java:1633)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator$30.apply(JvmModelGenerator.java:1610)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator$30.apply(JvmModelGenerator.java:1)
	at org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_doubleArrow(ObjectExtensions.java:139)
	at org.eclipse.xtext.xbase.compiler.LoopExtensions.forEach(LoopExtensions.java:34)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.generateAnnotation(JvmModelGenerator.java:1613)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator$28.apply(JvmModelGenerator.java:1590)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator$28.apply(JvmModelGenerator.java:1)
	at org.eclipse.xtext.xbase.compiler.ErrorSafeExtensions.forEachSafely(ErrorSafeExtensions.java:119)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.generateAnnotations(JvmModelGenerator.java:1593)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator._generateMember(JvmModelGenerator.java:898)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.generateMember(JvmModelGenerator.java:1997)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator$2.apply(JvmModelGenerator.java:317)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator$2.apply(JvmModelGenerator.java:1)
	at org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_doubleArrow(ObjectExtensions.java:139)
	at org.eclipse.xtext.xbase.compiler.LoopExtensions.forEach(LoopExtensions.java:34)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.generateMembersInBody(JvmModelGenerator.java:321)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator._generateBody(JvmModelGenerator.java:279)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.generateBody(JvmModelGenerator.java:1969)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.generateType(JvmModelGenerator.java:219)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator._internalDoGenerate(JvmModelGenerator.java:209)
	at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.internalDoGenerate(JvmModelGenerator.java:1952)
	at ...OutputConfigurationAwaredGenerator.doGenerate(OutputConfigurationAwaredGenerator.java:24)
	at ...MyCompilationTestHelper.compile(MyCompilationTestHelper.java:116)
	... 28 more

Re: [Xbase 2.6] Generating from XAnnotation leads to NullPointerException [message #1386110 is a reply to message #1386067] Fri, 13 June 2014 12:41 Go to previous messageGo to next message
Lorenzo Bettini is currently offline Lorenzo BettiniFriend
Messages: 1812
Registered: July 2009
Location: Firenze, Italy
Senior Member
On 13/06/2014 12:22, Boris Brodski wrote:
> Hello,
>
> converting my Xbase DSL to Xtext 2.6 I stuck with the following problem:
>
> In my grammar:
>
>
> grammar my.myDsl with
> org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
> ..
> MyRule:
> ...
> (customAnnotations += XAnnotation)*
> ...
> ;
>
>
> In Inferrer:
>
>
> ...
> members += methodDefinition.toMethod(...) [
> myRule.customAnnotations.translateAnnotationsTo(it)
> ...
> ]
>
>
> In DSL
>
>
> @Override
>
>
> works, but
>
>
> @SuppressWarnings("all")
>
>
> throws NullPointerException in
>
> public class LiteralsCompiler extends TypeConvertingCompiler {
> protected void toJavaExpression(XStringLiteral literal,
> ITreeAppendable appendable, boolean useUnicodeEscapes) {
> LightweightTypeReference type = getLightweightType(literal);
>
> // type is NULL
> // literal is XStringLiteralImpl (value: all)
>
> Should I invoke type resolution somehow?

Hi

I experienced NPE exceptions after switching to Xbase 2.6.0 for string
literals... do you have a custom type computer for custom XExpressions?
In my case the problem was due to the way I was invoking computeTypes.

As for annotations, I translate them like this

annotations.filterNull.filter[annotationType !=
null].translateAnnotationsTo(target)

cheers
Lorenzo

--
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
HOME: http://www.lorenzobettini.it
Xtext Book:
http://www.packtpub.com/implementing-domain-specific-languages-with-xtext-and-xtend/book


Re: [Xbase 2.6] Generating from XAnnotation leads to NullPointerException [message #1386296 is a reply to message #1386110] Mon, 16 June 2014 12:08 Go to previous messageGo to next message
Boris Brodski is currently offline Boris BrodskiFriend
Messages: 112
Registered: July 2009
Senior Member
Hello Lorenzo,


thank you very much! Your experience has helped me a lot!

Here is a bug I think I found: https://bugs.eclipse.org/bugs/show_bug.cgi?id=437519


Cheers,
Boris
Re: [Xbase 2.6] Generating from XAnnotation leads to NullPointerException [message #1471995 is a reply to message #1386296] Thu, 13 November 2014 14:04 Go to previous message
Boris Brodski is currently offline Boris BrodskiFriend
Messages: 112
Registered: July 2009
Senior Member
Just added a new reproduction of this bug to the github:

===> https://github.com/borisbrodski/XtextBug437519 <===
Previous Topic:Xtext to notify the modified Object
Next Topic:implicit variable in XBlockExpression
Goto Forum:
  


Current Time: Fri Apr 19 14:35:53 GMT 2024

Powered by FUDForum. Page generated in 0.03105 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top