itemisCREATE / solidity-ide

Solidity plugin for Eclipse
Eclipse Public License 1.0
87 stars 25 forks source link

Content Assist Broken #172

Closed andreasmuelder closed 5 years ago

andreasmuelder commented 5 years ago

With current master and xtext 2.14 the code completion is broken. Steps to reproduce:

within a function, type msg. ctrl-space The following exception is thrown:

Caused by: java.lang.IllegalStateException at org.eclipse.xtext.parser.antlr.UnorderedGroupHelper$State.canLeave(UnorderedGroupHelper.java:237) at org.eclipse.xtext.parser.antlr.UnorderedGroupHelper.canLeave(UnorderedGroupHelper.java:153) at org.eclipse.xtext.ide.editor.contentassist.antlr.IgnoreFirstEntranceUnorderedGroupHelper.canLeave(IgnoreFirstEntranceUnorderedGroupHelper.java:70) at org.eclipse.xtext.ide.editor.contentassist.antlr.EofListener.announceEof(EofListener.java:60) at org.eclipse.xtext.ide.editor.contentassist.antlr.ObservableXtextTokenStream.LA(ObservableXtextTokenStream.java:48) at org.antlr.runtime.DFA.predict(DFA.java:97) at org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA.predict(DFA.java:26) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleSimpleStatementAlternatives(InternalSolidityParser.java:10343) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleSimpleStatement(InternalSolidityParser.java:3231) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleStatementAlternatives_5_0(InternalSolidityParser.java:10281) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleStatementGroup_50Impl(InternalSolidityParser.java:28908) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleStatementGroup_50(InternalSolidityParser.java:28861) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleStatementAlternatives(InternalSolidityParser.java:10051) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleStatement(InternalSolidityParser.java:3061) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleBlockStatementsAssignment_2(InternalSolidityParser.java:53614) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleBlockGroup2Impl(InternalSolidityParser.java:23218) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleBlockGroup2(InternalSolidityParser.java:23159) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleBlockGroup1(InternalSolidityParser.java:23085) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleBlockGroup0(InternalSolidityParser.java:23006) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleBlock(InternalSolidityParser.java:2041) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionBlockAssignment_8_1(InternalSolidityParser.java:54363) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinition__Alternatives_8(InternalSolidityParser.java:9729) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionGroup8Impl(InternalSolidityParser.java:26183) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionGroup8(InternalSolidityParser.java:26141) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionGroup7(InternalSolidityParser.java:26046) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionGroup6(InternalSolidityParser.java:25939) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionGroup5(InternalSolidityParser.java:25860) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionGroup4(InternalSolidityParser.java:25760) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionGroup3(InternalSolidityParser.java:25681) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionGroup2(InternalSolidityParser.java:25581) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionGroup1(InternalSolidityParser.java:25502) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinitionGroup0(InternalSolidityParser.java:25423) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleFunctionDefinition(InternalSolidityParser.java:2551) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractPartAlternatives(InternalSolidityParser.java:9094) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractPart(InternalSolidityParser.java:936) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractDefinitionFeaturesAssignment_5(InternalSolidityParser.java:52340) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractDefinitionGroup5Impl(InternalSolidityParser.java:16096) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractDefinitionGroup5(InternalSolidityParser.java:16037) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractDefinitionGroup4(InternalSolidityParser.java:15963) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractDefinitionGroup3(InternalSolidityParser.java:15863) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractDefinitionGroup2(InternalSolidityParser.java:15774) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractDefinitionGroup1(InternalSolidityParser.java:15685) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractDefinitionGroup0(InternalSolidityParser.java:15606) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleContractDefinition(InternalSolidityParser.java:766) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleSourceUnitMemberAssignment_1_2(InternalSolidityParser.java:51841) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleSourceUnitUnorderedGroup_1Impl(InternalSolidityParser.java:51109) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleSourceUnitUnorderedGroup_1__1(InternalSolidityParser.java:51263) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.synpred192_InternalSolidity_fragment(InternalSolidityParser.java:59210) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.synpred192_InternalSolidity(InternalSolidityParser.java:59415) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleSourceUnit__UnorderedGroup_10(InternalSolidityParser.java:51194) at com.yakindu.solidity.ide.contentassist.antlr.internal.InternalSolidityParser.ruleSourceUnit__UnorderedGroup_1(InternalSolidityParser.java:50804) ... 21 more

andreasmuelder commented 5 years ago

This is a regression introduced with changes in https://github.com/Yakindu/solidity-ide/issues/127 seems that we hit an xtext bug here: https://bugs.eclipse.org/bugs/show_bug.cgi?id=367397

andreasmuelder commented 5 years ago

Regarding discussion https://github.com/ethereum/solidity/pull/5009#discussion_r218447324 we can simply solve that by removing the unordered group here. pragma has to be defined before import statements.