Home » Modeling » TMF (Xtext) » Debug "Produced region is inconsistent"
Debug "Produced region is inconsistent" [message #1779853] |
Sun, 14 January 2018 21:22 |
Steve Hostettler Messages: 81 Registered: June 2016 |
Member |
|
|
Hello,
going further with the instrumentation to get debugging for non trivial language I stumble upon the following errors: "Produced region is inconsistent"
I understand that the trace annotations are not in line with what is expected but I fail to understand how this happens.
Let me be more specific, with the following dsl code everything is fine:
InExpression (for all @EXPRESSION.Value as value) {
if (value.valueString in ('foo', 'bar')) {
// save value
}
}
Now here is my problem:
1) I carefully checked my stacktrace and no of the method are missing the @Traced
2) What happens exactly, I see the result but I fail to understand the process
3) How can I unit test this. It is pretty tedious to have to start eclipse.
Many thanks for your help
However uncommenting the save valuer statement in the if yield to
8337014 [Worker-21] ERROR org.eclipse.xtext.generator.trace.internal.AbstractTraceForURIProvider - Produced region is inconsistent with parent, this: TraceRegion [myOffset=699, myLength=49] associations={
LocationData [TextRegionWithLineInformation [153:22][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
},
...
What is interesting is that in the first case the region are clearly whereas not in the second case because the code of the save (createOrUpdate) is outside of the ]03,02]
|
|
| |
Re: Debug "Produced region is inconsistent" [message #1779855 is a reply to message #1779854] |
Sun, 14 January 2018 21:36 |
Steve Hostettler Messages: 81 Registered: June 2016 |
Member |
|
|
Hello Cristian,
thanks for looking at it. Here is some more information and the full strack trace. (just a note to say that it works for toy examples)
@Traced def dispatch generate(IfStatement statement, GeneratorContext context) {
'''
if («statement.condition.generate(context)») {
«statement.then.generate( context)» //This calls the block statement code below, if remove everything goes fine
} «IF statement.^else!==null»else {
«statement.^else.generate(context)»
}«ENDIF»
'''
}
@Traced def dispatch generate(BlockStatement statement, GeneratorContext context) {
'''
«FOR s : statement.statements»
int i = 0; //<--- This is not the real code, normally at this we can treat any statement but just putting a hardcoded statement reproduces the problem
«ENDFOR»
'''
}
309590 [Worker-8] ERROR org.eclipse.xtext.generator.trace.internal.AbstractTraceForURIProvider - Produced region is inconsistent with parent, this: TraceRegion [myOffset=699, myLength=15] associations={
LocationData [TextRegionWithLineInformation [153:23][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
}, parent: TraceRegion [myOffset=581, myLength=132] associations={
LocationData [TextRegionWithLineInformation [112:64][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=585, myLength=106] associations={
LocationData [TextRegionWithLineInformation [115:37][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=585, myLength=106] associations={
LocationData [TextRegionWithLineInformation [115:37][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=586, myLength=104] associations={
LocationData [TextRegionWithLineInformation [116:35][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=610, myLength=5] associations={
LocationData [TextRegionWithLineInformation [138:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=617, myLength=5] associations={
LocationData [TextRegionWithLineInformation [145:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=633, myLength=56] associations={
LocationData [TextRegionWithLineInformation [116:17][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=634, myLength=5] associations={
LocationData [TextRegionWithLineInformation [116:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=665, myLength=5] associations={
LocationData [TextRegionWithLineInformation [116:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
}
}
}
}
TraceRegion [myOffset=699, myLength=15] associations={
LocationData [TextRegionWithLineInformation [153:23][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
}
}
java.lang.IllegalArgumentException: Produced region is inconsistent with parent, this: TraceRegion [myOffset=699, myLength=15] associations={
LocationData [TextRegionWithLineInformation [153:23][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
}, parent: TraceRegion [myOffset=581, myLength=132] associations={
LocationData [TextRegionWithLineInformation [112:64][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=585, myLength=106] associations={
LocationData [TextRegionWithLineInformation [115:37][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=585, myLength=106] associations={
LocationData [TextRegionWithLineInformation [115:37][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=586, myLength=104] associations={
LocationData [TextRegionWithLineInformation [116:35][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=610, myLength=5] associations={
LocationData [TextRegionWithLineInformation [138:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=617, myLength=5] associations={
LocationData [TextRegionWithLineInformation [145:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=633, myLength=56] associations={
LocationData [TextRegionWithLineInformation [116:17][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=634, myLength=5] associations={
LocationData [TextRegionWithLineInformation [116:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=665, myLength=5] associations={
LocationData [TextRegionWithLineInformation [116:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
}
}
}
}
TraceRegion [myOffset=699, myLength=15] associations={
LocationData [TextRegionWithLineInformation [153:23][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
}
}
at org.eclipse.xtext.generator.trace.AbstractStatefulTraceRegion.<init>(AbstractStatefulTraceRegion.java:36)
at org.eclipse.xtext.generator.trace.TraceRegion.<init>(TraceRegion.java:58)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer$IdentityStrategy.createRegion(TraceRegionSerializer.java:63)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer$IdentityStrategy.createRegion(TraceRegionSerializer.java:53)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.doReadFrom(TraceRegionSerializer.java:334)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.doReadFrom(TraceRegionSerializer.java:337)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.doReadFrom(TraceRegionSerializer.java:337)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.doReadFrom(TraceRegionSerializer.java:337)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.doReadFrom(TraceRegionSerializer.java:285)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.readTraceRegionFrom(TraceRegionSerializer.java:169)
at org.eclipse.xtext.generator.trace.internal.AbstractTraceForURIProvider$CachedTraces.getTraceRegion(AbstractTraceForURIProvider.java:125)
at org.eclipse.xtext.generator.trace.internal.AbstractTraceForURIProvider$1.getTraceRegion(AbstractTraceForURIProvider.java:208)
at org.eclipse.xtext.generator.trace.internal.AbstractTrace.doGetRootTraceRegion(AbstractTrace.java:126)
at org.eclipse.xtext.generator.trace.internal.AbstractTrace.getRootTraceRegion(AbstractTrace.java:102)
at org.eclipse.xtext.builder.smap.DebugSourceInstallingCompilationParticipant.findRootTraceRegion(DebugSourceInstallingCompilationParticipant.java:200)
at org.eclipse.xtext.builder.smap.DebugSourceInstallingCompilationParticipant.buildFinished(DebugSourceInstallingCompilationParticipant.java:125)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:235)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:735)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:301)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:304)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:360)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:383)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:142)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:232)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
!ENTRY org.apache.log4j 4 0 2018-01-14 22:35:21.369
!MESSAGE org.eclipse.xtext.generator.trace.internal.AbstractTraceForURIProvider - Produced region is inconsistent with parent, this: TraceRegion [myOffset=699, myLength=15] associations={
LocationData [TextRegionWithLineInformation [153:23][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
}, parent: TraceRegion [myOffset=581, myLength=132] associations={
LocationData [TextRegionWithLineInformation [112:64][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=585, myLength=106] associations={
LocationData [TextRegionWithLineInformation [115:37][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=585, myLength=106] associations={
LocationData [TextRegionWithLineInformation [115:37][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=586, myLength=104] associations={
LocationData [TextRegionWithLineInformation [116:35][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=610, myLength=5] associations={
LocationData [TextRegionWithLineInformation [138:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=617, myLength=5] associations={
LocationData [TextRegionWithLineInformation [145:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=633, myLength=56] associations={
LocationData [TextRegionWithLineInformation [116:17][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=634, myLength=5] associations={
LocationData [TextRegionWithLineInformation [116:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=665, myLength=5] associations={
LocationData [TextRegionWithLineInformation [116:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
}
}
}
}
TraceRegion [myOffset=699, myLength=15] associations={
LocationData [TextRegionWithLineInformation [153:23][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
}
}
!STACK 0
java.lang.IllegalArgumentException: Produced region is inconsistent with parent, this: TraceRegion [myOffset=699, myLength=15] associations={
LocationData [TextRegionWithLineInformation [153:23][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
}, parent: TraceRegion [myOffset=581, myLength=132] associations={
LocationData [TextRegionWithLineInformation [112:64][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=585, myLength=106] associations={
LocationData [TextRegionWithLineInformation [115:37][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=585, myLength=106] associations={
LocationData [TextRegionWithLineInformation [115:37][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=586, myLength=104] associations={
LocationData [TextRegionWithLineInformation [116:35][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=610, myLength=5] associations={
LocationData [TextRegionWithLineInformation [138:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=617, myLength=5] associations={
LocationData [TextRegionWithLineInformation [145:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=633, myLength=56] associations={
LocationData [TextRegionWithLineInformation [116:17][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
} nestedRegions={
TraceRegion [myOffset=634, myLength=5] associations={
LocationData [TextRegionWithLineInformation [116:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
TraceRegion [myOffset=665, myLength=5] associations={
LocationData [TextRegionWithLineInformation [116:5][lineNumber=5, endLineNumber=5]][path=Conditions-1.0.0.wkfs]
}
}
}
}
}
TraceRegion [myOffset=699, myLength=15] associations={
LocationData [TextRegionWithLineInformation [153:23][lineNumber=5, endLineNumber=7]][path=Conditions-1.0.0.wkfs]
}
}
at org.eclipse.xtext.generator.trace.AbstractStatefulTraceRegion.<init>(AbstractStatefulTraceRegion.java:36)
at org.eclipse.xtext.generator.trace.TraceRegion.<init>(TraceRegion.java:58)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer$IdentityStrategy.createRegion(TraceRegionSerializer.java:63)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer$IdentityStrategy.createRegion(TraceRegionSerializer.java:53)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.doReadFrom(TraceRegionSerializer.java:334)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.doReadFrom(TraceRegionSerializer.java:337)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.doReadFrom(TraceRegionSerializer.java:337)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.doReadFrom(TraceRegionSerializer.java:337)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.doReadFrom(TraceRegionSerializer.java:285)
at org.eclipse.xtext.generator.trace.TraceRegionSerializer.readTraceRegionFrom(TraceRegionSerializer.java:169)
at org.eclipse.xtext.generator.trace.internal.AbstractTraceForURIProvider$CachedTraces.getTraceRegion(AbstractTraceForURIProvider.java:125)
at org.eclipse.xtext.generator.trace.internal.AbstractTraceForURIProvider$1.getTraceRegion(AbstractTraceForURIProvider.java:208)
at org.eclipse.xtext.generator.trace.internal.AbstractTrace.doGetRootTraceRegion(AbstractTrace.java:126)
at org.eclipse.xtext.generator.trace.internal.AbstractTrace.getRootTraceRegion(AbstractTrace.java:102)
at org.eclipse.xtext.builder.smap.DebugSourceInstallingCompilationParticipant.findRootTraceRegion(DebugSourceInstallingCompilationParticipant.java:200)
at org.eclipse.xtext.builder.smap.DebugSourceInstallingCompilationParticipant.buildFinished(DebugSourceInstallingCompilationParticipant.java:125)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:235)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:735)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:301)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:304)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:360)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:383)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:142)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:232)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
[Updated on: Sun, 14 January 2018 21:38] Report message to a moderator
|
|
| |
Re: Debug "Produced region is inconsistent" [message #1779857 is a reply to message #1779856] |
Sun, 14 January 2018 21:48 |
|
And as I tried to hint. A simple reproduce example with just the problem would help me
(And possible you) so having an example with and if else and a hard coded for only would help
And maybe Understand if this is a bug or something else.
The interesting point is that this is a offf by one issue so
Are you on windows or a Unix like os?
What happens if you do the if else and the for all in one line including the ''''''
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
| | | | | | |
Re: Debug "Produced region is inconsistent" [message #1779933 is a reply to message #1779929] |
Mon, 15 January 2018 20:35 |
|
btw could not reproduce with
Model:
ifStatement=IfStatement;
IfStatement:
'if' condition=BooleanLiteral
then=BlockStatement
('else'
else=BlockStatement)?;
BooleanLiteral:
value?="true" | {BooleanLiteral} "false";
BlockStatement:
{BlockStatement} "{"
statements+=Literal*
"}";
Literal:
value=ID;
class MyDslGenerator extends AbstractGenerator {
@TracedAccessors(MyDslFactory)
static class MyDslTraceExtension {
}
@Inject extension MyDslTraceExtension
override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
val model = resource.contents.head as Model
fsa.generateTracedFile("test.txt", model,'''
«model.ifStatement.generate(context)»
''')
}
@Traced def dispatch generate(IfStatement statement, IGeneratorContext context) {
'''
if («statement.condition.generate(context)») {
«statement.then.generate( context)» //This calls the block statement code below, if remove everything goes fine
} «IF statement.^else!==null»else {
«statement.^else.generate(context)»
}«ENDIF»
'''
}
@Traced def dispatch generate(BlockStatement statement, IGeneratorContext context) {
'''
«FOR s : statement.statements»
int i = 0; //<--- This is not the real code, normally at this we can treat any statement but just putting a hardcoded statement reproduces the problem
«ENDFOR»
'''
}
@Traced def dispatch generate(BooleanLiteral statement, IGeneratorContext context) {
'''«statement._value»'''
}
}
if true
{
x
y
z
} else {
a
b
c
}
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
| | | | | | | | | | |
Goto Forum:
Current Time: Fri Apr 26 03:32:30 GMT 2024
Powered by FUDForum. Page generated in 0.05560 seconds
|