Skip to content

Commit

Permalink
Merge pull request #659 from smeup/bugfix/LS24004845/resolution-leaki…
Browse files Browse the repository at this point in the history
…ng-error

Fix error throw logic
  • Loading branch information
lanarimarco authored Nov 14, 2024
2 parents 019e001 + 61aa311 commit 9e8b869
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import com.smeup.rpgparser.interpreter.InStatementDataDefinition
import com.smeup.rpgparser.interpreter.type
import com.smeup.rpgparser.parsing.ast.*
import com.smeup.rpgparser.parsing.facade.AstCreatingException
import com.smeup.rpgparser.parsing.facade.adaptInFunctionOf
import com.smeup.rpgparser.parsing.facade.getExecutionProgramNameWithNoExtension
import com.smeup.rpgparser.parsing.facade.getLastPoppedParsingProgram
import com.smeup.rpgparser.utils.popIfPresent
Expand Down Expand Up @@ -272,7 +273,6 @@ private fun ReferenceByName<AbstractDataDefinition>.tryToResolveRecursively(posi
resolved = this.tryToResolve(currentCu.allDataDefinitions, caseInsensitive = true)
currentCu = currentCu.parent?.let { it as CompilationUnit }
}
require(resolved) {
"Data reference not resolved: ${this.name} at $position"
}
val relativePosition = position?.adaptInFunctionOf(getProgramNameToCopyBlocks().second)
if (!resolved) cu.error("Data reference not resolved: ${this.name} at $relativePosition")
}
Original file line number Diff line number Diff line change
Expand Up @@ -2549,4 +2549,19 @@ Test 6
val expected = listOf("0", "0", "0", "1")
assertEquals(expected, "PRSLTCALLERDUPLICATE".outputOf())
}

@Test
fun missingDefinitionOnPListShouldThrowResolutionError() {
val systemInterface = JavaSystemInterface()

val source = """
| C CALL 'PGM'
| C PARM MISSING
""".trimMargin()

val program = getProgram(source, systemInterface)
assertFailsWith(AstResolutionError::class) {
program.singleCall(listOf())
}
}
}

0 comments on commit 9e8b869

Please sign in to comment.