From 97577307a16365c61d8ace7528add983e5c8ff02 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Doderlein Date: Thu, 8 Jan 2026 11:24:38 +0100 Subject: [PATCH 1/2] Enable out of bound in slice with negative index --- .../rascalmpl/interpreter/result/ElementResult.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/org/rascalmpl/interpreter/result/ElementResult.java b/src/org/rascalmpl/interpreter/result/ElementResult.java index 08e126a7752..781ce034b21 100644 --- a/src/org/rascalmpl/interpreter/result/ElementResult.java +++ b/src/org/rascalmpl/interpreter/result/ElementResult.java @@ -229,13 +229,20 @@ public Result slice(Result first, Res if(first != null){ firstIndex = getInt(first); - if(firstIndex < 0) - firstIndex += len; + if(firstIndex < 0){ + firstIndex = Math.max(firstIndex+len, 0); + } + else{ + firstIndex = Math.min(firstIndex, len-1); + } } if(end != null){ endIndex = getInt(end); if(endIndex < 0){ - endIndex += len; + endIndex = Math.max(endIndex+len, 0); + } + else{ + endIndex = Math.min(endIndex, len); } } From f6eec62bef4a24582f7bd8e2738c6519d420efe4 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Doderlein Date: Thu, 8 Jan 2026 15:12:27 +0100 Subject: [PATCH 2/2] Fix issue and add tests --- src/org/rascalmpl/interpreter/result/ElementResult.java | 6 +++++- .../rascalmpl/library/lang/rascal/tests/basic/Lists.rsc | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/org/rascalmpl/interpreter/result/ElementResult.java b/src/org/rascalmpl/interpreter/result/ElementResult.java index 781ce034b21..d4a6661ed87 100644 --- a/src/org/rascalmpl/interpreter/result/ElementResult.java +++ b/src/org/rascalmpl/interpreter/result/ElementResult.java @@ -233,7 +233,7 @@ public Result slice(Result first, Res firstIndex = Math.max(firstIndex+len, 0); } else{ - firstIndex = Math.min(firstIndex, len-1); + firstIndex = Math.min(firstIndex, len); } } if(end != null){ @@ -246,6 +246,10 @@ public Result slice(Result first, Res } } + if(firstIndex == len && endIndex