Home » Modeling » TMF (Xtext) » NPE while using content assist in xtext generated editor(NPE in org.antlr.runtime(V3) in BaseRecognizer)
NPE while using content assist in xtext generated editor [message #654555] |
Wed, 16 February 2011 04:59  |
Eclipse User |
|
|
|
Hi,
I am getting into an NPE when I type in a query with multiple nests, in the xtext generated editor.
I understand from earlier posts that issue is with BaseRecognizer of org.antlr.runtime version 3, where the system.arraycopy has a bug in it, that the entire array is not copied, like in the code below.
protected void pushFollow(BitSet fset) {
if ( (_fsp +1)>=following.length ) {
BitSet[] f = new BitSet[following.length*2];
System.arraycopy(following, 0, f, 0, following.length-1); following = f;
}
following[++_fsp] = fset;
}
Also i see that this is fixed in Version 3.2 of antlr from the bug, https://bugs.eclipse.org/bugs/show_bug.cgi?id=326509.
I want to confirm if this is already fixed in Version 3 of ANTLR too, if not I will proceed creating a bug for the same.
Thanks in advance.
Regards,
Manasa
|
|
|
Re: NPE while using content assist in xtext generated editor [message #654626 is a reply to message #654555] |
Wed, 16 February 2011 08:42   |
Eclipse User |
|
|
|
Hi Manasa,
the bug was fixed for Xtext 1.0.1 and Xtext 2.0 - no need to file a new
ticket.
Regards,
Sebastian
--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com
Am 16.02.11 10:59, schrieb manasa:
> Hi,
>
> I am getting into an NPE when I type in a query with multiple nests, in
> the xtext generated editor. I understand from earlier posts that issue
> is with BaseRecognizer of org.antlr.runtime version 3, where the
> system.arraycopy has a bug in it, that the entire array is not copied,
> like in the code below.
>
> protected void pushFollow(BitSet fset) {
> if ( (_fsp +1)>=following.length ) {
> BitSet[] f = new BitSet[following.length*2];
> System.arraycopy(following, 0, f, 0, following.length-1); following = f;
> }
> following[++_fsp] = fset;
> }
>
> Also i see that this is fixed in Version 3.2 of antlr from the bug,
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=326509
> I want to confirm if this is already fixed in Version 3 of ANTLR too, if
> not I will proceed creating a bug for the same.
>
> Thanks in advance.
>
> Regards,
> Manasa
|
|
| | |
Re: NPE while using content assist in xtext generated editor [message #655032 is a reply to message #654859] |
Fri, 18 February 2011 00:22   |
Eclipse User |
|
|
|
Hi,
I am using XText version 1.0.1 and org.antlr.runtime version 3.0.0.
I try to type in the following query in the xtext based editor, using content assist.
LibrariesWithNests:
from Library as lib select lib where lib.books in (
from Book as b select b where b.instanceOf in (
from Manuscript as m select m where m.author in (
from
When I reach line 4, and try to use content assist, I get a NPE, like in the stack given below.
java.lang.NullPointerException
at org.antlr.runtime.BaseRecognizer.combineFollows(BaseRecogniz er.java:457)
at org.antlr.runtime.BaseRecognizer.computeContextSensitiveRule FOLLOW(BaseRecognizer.java:444)
at org.antlr.runtime.BaseRecognizer.recoverFromMismatchedElemen t(BaseRecognizer.java:546)
at org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Abs tractInternalContentAssistParser.recoverFromMismatchedToken( AbstractInternalContentAssistParser.java:182)
at org.antlr.runtime.BaseRecognizer.mismatch(BaseRecognizer.jav a:119)
at org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Abs tractInternalContentAssistParser.mismatch(AbstractInternalCo ntentAssistParser.java:354)
at org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:9 9)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__QueryExpression__Group__2__Impl( InternalQueryParser.java:9175)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__QueryExpression__Group__2(Intern alQueryParser.java:9140)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__QueryExpression__Group__1(Intern alQueryParser.java:9062)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__QueryExpression__Group__0(Intern alQueryParser.java:8989)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.ruleQueryExpression(InternalQueryParse r.java:1775)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__Expression__Alternatives(Interna lQueryParser.java:2214)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.ruleExpression(InternalQueryParser.jav a:1250)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__ExpressionWhereEntry__RhsAssignm ent_2(InternalQueryParser.java:10392)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__ExpressionWhereEntry__Group__2__ Impl(InternalQueryParser.java:8624)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__ExpressionWhereEntry__Group__2(I nternalQueryParser.java:8585)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__ExpressionWhereEntry__Group__1(I nternalQueryParser.java:8507)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__ExpressionWhereEntry__Group__0(I nternalQueryParser.java:8425)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.ruleExpressionWhereEntry(InternalQuery Parser.java:1100)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__ConcreteWhereEntry__Alternatives (InternalQueryParser.java:2012)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.ruleConcreteWhereEntry(InternalQueryPa rser.java:950)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__AndWhereEntry__Group__0__Impl(In ternalQueryParser.java:7734)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__AndWhereEntry__Group__0(Internal QueryParser.java:7694)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.ruleAndWhereEntry(InternalQueryParser. java:875)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__WhereEntry__Group__0__Impl(Inter nalQueryParser.java:7225)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__WhereEntry__Group__0(InternalQue ryParser.java:7185)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.ruleWhereEntry(InternalQueryParser.jav a:800)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__MQLquery__WhereEntryAssignment_6 _1(InternalQueryParser.java:9607)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__MQLquery__Group_6__1__Impl(Inter nalQueryParser.java:4331)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__MQLquery__Group_6__1(InternalQue ryParser.java:4292)
at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna l.InternalQueryParser.rule__MQLquery__Group_6__0(InternalQue ryParser.java:4223)
However, when i override pushFollow method in the generated InternalParser class in .ui project, i no more see the NPE occuring.
protected void pushFollow(BitSet fset) {
if ( (_fsp +1)>=following.length ) {
BitSet[] f = new BitSet[following.length*2];
//modified last parameter from following.length-1 to following.length
System.arraycopy(following, 0, f, 0, following.length);
following = f;
}
following[++_fsp] = fset;
}
I see that this bug is not fixed in xtext version 1.0.1 when used with antlr Version 3. If the workaround is in place, could you clarify how can we use it to fix this issue.
Thanks & Regards,
Manasa
|
|
|
Re: NPE while using content assist in xtext generated editor [message #655318 is a reply to message #655032] |
Sat, 19 February 2011 07:10   |
Eclipse User |
|
|
|
Hi Manasa,
sorry, I was wrong about the version. The fix made it into Xtext 1.0.2
which will be released in a couple of days. It is already available on
the nightly update site
http://download.eclipse.org/modeling/tmf/updates/nightly/
Regards,
Sebastian
--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com
Am 18.02.11 06:22, schrieb manasa:
> Hi,
>
> I am using XText version 1.0.1 and org.antlr.runtime version 3.0.0.
> I try to type in the following query in the xtext based editor, using
> content assist.
>
> LibrariesWithNests:
> from Library as lib select lib where lib.books in (
> from Book as b select b where b.instanceOf in (
> from Manuscript as m select m where m.author in (
> from
> When I reach line 4, and try to use content assist, I get a NPE, like in
> the stack given below.
>
>
> java.lang.NullPointerException
> at org.antlr.runtime.BaseRecognizer.combineFollows(BaseRecogniz
> er.java:457)
> at org.antlr.runtime.BaseRecognizer.computeContextSensitiveRule
> FOLLOW(BaseRecognizer.java:444)
> at org.antlr.runtime.BaseRecognizer.recoverFromMismatchedElemen
> t(BaseRecognizer.java:546)
> at org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Abs
> tractInternalContentAssistParser.recoverFromMismatchedToken(
> AbstractInternalContentAssistParser.java:182)
> at org.antlr.runtime.BaseRecognizer.mismatch(BaseRecognizer.jav a:119)
> at org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Abs
> tractInternalContentAssistParser.mismatch(AbstractInternalCo
> ntentAssistParser.java:354)
> at org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:9 9)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__QueryExpression__Group__2__Impl(
> InternalQueryParser.java:9175)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__QueryExpression__Group__2(Intern
> alQueryParser.java:9140)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__QueryExpression__Group__1(Intern
> alQueryParser.java:9062)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__QueryExpression__Group__0(Intern
> alQueryParser.java:8989)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.ruleQueryExpression(InternalQueryParse r.java:1775)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__Expression__Alternatives(Interna
> lQueryParser.java:2214)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.ruleExpression(InternalQueryParser.jav a:1250)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__ExpressionWhereEntry__RhsAssignm
> ent_2(InternalQueryParser.java:10392)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__ExpressionWhereEntry__Group__2__
> Impl(InternalQueryParser.java:8624)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__ExpressionWhereEntry__Group__2(I
> nternalQueryParser.java:8585)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__ExpressionWhereEntry__Group__1(I
> nternalQueryParser.java:8507)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__ExpressionWhereEntry__Group__0(I
> nternalQueryParser.java:8425)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.ruleExpressionWhereEntry(InternalQuery
> Parser.java:1100)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__ConcreteWhereEntry__Alternatives
> (InternalQueryParser.java:2012)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.ruleConcreteWhereEntry(InternalQueryPa rser.java:950)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__AndWhereEntry__Group__0__Impl(In
> ternalQueryParser.java:7734)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__AndWhereEntry__Group__0(Internal
> QueryParser.java:7694)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.ruleAndWhereEntry(InternalQueryParser. java:875)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__WhereEntry__Group__0__Impl(Inter
> nalQueryParser.java:7225)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__WhereEntry__Group__0(InternalQue
> ryParser.java:7185)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.ruleWhereEntry(InternalQueryParser.jav a:800)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__MQLquery__WhereEntryAssignment_6
> _1(InternalQueryParser.java:9607)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__MQLquery__Group_6__1__Impl(Inter
> nalQueryParser.java:4331)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__MQLquery__Group_6__1(InternalQue
> ryParser.java:4292)
> at org.eclipse.emf.query2.syntax.ui.contentassist.antlr.interna
> l.InternalQueryParser.rule__MQLquery__Group_6__0(InternalQue
> ryParser.java:4223)
>
> However, when i override pushFollow method in the generated
> InternalParser class in .ui project, i no more see the NPE occuring.
>
>
> protected void pushFollow(BitSet fset) {
> if ( (_fsp +1)>=following.length ) {
> BitSet[] f = new BitSet[following.length*2];
> //modified last parameter from following.length-1 to following.length
> System.arraycopy(following, 0, f, 0, following.length); following = f;
> }
> following[++_fsp] = fset;
> }
>
>
> I see that this bug is not fixed in xtext version 1.0.1 when used with
> antlr Version 3. If the workaround is in place, could you clarify how
> can we use it to fix this issue.
>
> Thanks & Regards,
> Manasa
|
|
| |
Goto Forum:
Current Time: Wed May 14 04:16:00 EDT 2025
Powered by FUDForum. Page generated in 0.03542 seconds
|