iets3.opensource icon indicating copy to clipboard operation
iets3.opensource copied to clipboard

Stackoverflow in replaceSuccessType

Open alexanderpann opened this issue 1 year ago • 0 comments

an error occurred while applying rule to node (instance of StringLiteral). It happens, for example, here when the success type is used instead of the attempt type. The rule inside replaceSuccessType should probably just be removed. We already check the subtype relation in the custom condition. By creating this new inequation, the replacement rule is executed over and over.

java.lang.StackOverflowError
	at java.base/java.util.HashMap.putVal(HashMap.java:627)
	at java.base/java.util.HashMap.put(HashMap.java:610)
	at jetbrains.mps.smodel.CopyUtil.clone(CopyUtil.java:173)
	at jetbrains.mps.smodel.CopyUtil.copy(CopyUtil.java:153)
	at jetbrains.mps.smodel.CopyUtil.copy(CopyUtil.java:131)
	at jetbrains.mps.newTypesystem.state.Equations.expandNode(Equations.java:198)
	at jetbrains.mps.newTypesystem.state.Equations.replaceChildren(Equations.java:208)
	at jetbrains.mps.newTypesystem.state.Equations.expandNode(Equations.java:199)
	at jetbrains.mps.newTypesystem.state.Equations.expandNode(Equations.java:180)
	at jetbrains.mps.newTypesystem.state.State.expand(State.java:412)
	at jetbrains.mps.newTypesystem.state.blocks.Block.getResolvedInput(Block.java:45)
	at jetbrains.mps.newTypesystem.state.blocks.InequalityBlock.performAction(InequalityBlock.java:80)
	at jetbrains.mps.newTypesystem.operation.block.RemoveBlockOperation.execute(RemoveBlockOperation.java:49)
	at jetbrains.mps.newTypesystem.state.State.executeOperation(State.java:309)
	at jetbrains.mps.newTypesystem.state.State.becameConcrete(State.java:193)
	at jetbrains.mps.newTypesystem.state.State.testInputsResolved(State.java:217)
	at jetbrains.mps.newTypesystem.state.State.collectVarsExecuteIfNecessary(State.java:230)
	at jetbrains.mps.newTypesystem.operation.block.AddBlockOperation.execute(AddBlockOperation.java:57)
	at jetbrains.mps.newTypesystem.state.State.executeOperation(State.java:309)
	at jetbrains.mps.newTypesystem.state.State.addBlock(State.java:197)
	at jetbrains.mps.newTypesystem.state.State.addInequality(State.java:267)
	at jetbrains.mps.newTypesystem.context.BaseTypecheckingContext.createLessThanInequality(BaseTypecheckingContext.java:130)
	at jetbrains.mps.typesystem.inference.TypeCheckingContext.createLessThanInequality(TypeCheckingContext.java:107)
	at org.iets3.core.expr.base.typesystem.replaceSuccessType_InequationReplacementRule.processInequation(replaceSuccessType_InequationReplacementRule.java:29)
	at jetbrains.mps.newTypesystem.state.blocks.InequalityBlock.lambda$processReplacementRules$1(InequalityBlock.java:98)
	at jetbrains.mps.newTypesystem.operation.AddRemarkOperation.execute(AddRemarkOperation.java:55)
	at jetbrains.mps.newTypesystem.state.State.executeOperation(State.java:316)
	at jetbrains.mps.newTypesystem.state.blocks.InequalityBlock.processReplacementRules(InequalityBlock.java:97)
	at jetbrains.mps.newTypesystem.state.blocks.InequalityBlock.processInequality(InequalityBlock.java:116)
	at jetbrains.mps.newTypesystem.state.blocks.InequalityBlock.performAction(InequalityBlock.java:82)
	at jetbrains.mps.newTypesystem.operation.block.RemoveBlockOperation.execute(RemoveBlockOperation.java:49)
	at jetbrains.mps.newTypesystem.state.State.executeOperation(State.java:309)
	at jetbrains.mps.newTypesystem.state.State.becameConcrete(State.java:193)
	at jetbrains.mps.newTypesystem.state.State.testInputsResolved(State.java:217)
	at jetbrains.mps.newTypesystem.state.State.collectVarsExecuteIfNecessary(State.java:230)
	at jetbrains.mps.newTypesystem.operation.block.AddBlockOperation.execute(AddBlockOperation.java:57)
	at jetbrains.mps.newTypesystem.state.State.executeOperation(State.java:309)
	at jetbrains.mps.newTypesystem.state.State.addBlock(State.java:197)
	at jetbrains.mps.newTypesystem.state.State.addInequality(State.java:267)
	at jetbrains.mps.newTypesystem.context.BaseTypecheckingContext.createLessThanInequality(BaseTypecheckingContext.java:130)
	at jetbrains.mps.typesystem.inference.TypeCheckingContext.createLessThanInequality(TypeCheckingContext.java:107)
	at 

alexanderpann avatar Jul 03 '23 11:07 alexanderpann