Skip to content

Commit d25a713

Browse files
author
Miloslav Metelka
committed
[GR-14033] Fixed RcppParallel installation.
PullRequest: fastr/1923
2 parents 6af23b2 + d084bb1 commit d25a713

File tree

4 files changed

+24
-10
lines changed

4 files changed

+24
-10
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ New features:
88
Bug fixes:
99

1010
* when using GNU-R graphics (-UseInternalGridGraphics) FastR would still override the graphics package R functions
11+
* cannot install RcppParallel #52
1112

1213
# 1.0 RC 12
1314

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,7 @@ protected RAbstractStringVector doSub(String patternArg, String replacementArg,
482482
} else {
483483
pattern = RegExp.checkPreDefinedClasses(pattern);
484484
}
485+
String preparedReplacement = null;
485486
String[] result = new String[len];
486487
for (int i = 0; i < len; i++) {
487488
String input = vector.getDataAt(i);
@@ -493,13 +494,17 @@ protected RAbstractStringVector doSub(String patternArg, String replacementArg,
493494
String value;
494495
if (fixed) {
495496
if (gsub) {
496-
replacement = replacement.replace("$", "\\$");
497-
replacement = convertGroups(replacement, 0);
498-
value = Pattern.compile(pattern, Pattern.LITERAL).matcher(input).replaceAll(replacement);
497+
if (preparedReplacement == null) {
498+
preparedReplacement = replacement.replace("$", "\\$");
499+
preparedReplacement = convertGroups(preparedReplacement, 0);
500+
}
501+
value = Pattern.compile(pattern, Pattern.LITERAL).matcher(input).replaceAll(preparedReplacement);
499502
} else {
500503
int ix = input.indexOf(pattern);
501-
replacement = replacement.replace("\\\\", "\\");
502-
value = ix < 0 ? input : input.substring(0, ix) + replacement + input.substring(ix + pattern.length());
504+
if (preparedReplacement == null) {
505+
preparedReplacement = replacement.replace("\\\\", "\\");
506+
}
507+
value = ix < 0 ? input : input.substring(0, ix) + preparedReplacement + input.substring(ix + pattern.length());
503508
}
504509
} else if (perl) {
505510
int lastEndOffset = 0;
@@ -562,12 +567,15 @@ protected RAbstractStringVector doSub(String patternArg, String replacementArg,
562567
}
563568
} else {
564569
Matcher matcher = Pattern.compile(pattern, Pattern.DOTALL).matcher(input);
565-
replacement = convertGroups(replacement, matcher.groupCount());
566-
570+
if (preparedReplacement == null) {
571+
preparedReplacement = replacement.replace("$", "\\$");
572+
// matcher.groupCount() only depends on the pattern (not on the input)
573+
preparedReplacement = convertGroups(preparedReplacement, matcher.groupCount());
574+
}
567575
if (gsub) {
568-
value = matcher.replaceAll(replacement);
576+
value = matcher.replaceAll(preparedReplacement);
569577
} else {
570-
value = matcher.replaceFirst(replacement);
578+
value = matcher.replaceFirst(preparedReplacement);
571579
}
572580
}
573581
result[i] = value;

com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33795,6 +33795,10 @@ NULL
3379533795
#gsub('(_[bB])','\\1_m','b_b')
3379633796
[1] "b_b_m"
3379733797

33798+
##com.oracle.truffle.r.test.builtins.TestBuiltin_gsub.testGsub#
33799+
#gsub('@CXX11@', '$(CXX11)', ' CPLUS="@CXX11@" \'', fixed=FALSE)
33800+
[1] " CPLUS=\"$(CXX11)\" '"
33801+
3379833802
##com.oracle.truffle.r.test.builtins.TestBuiltin_gsub.testGsub#
3379933803
#gsub('_[bB]','\\0_m','b_b')
3380033804
[1] "b0_m"

com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_gsub.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1515
*
1616
* Copyright (c) 2012-2014, Purdue University
17-
* Copyright (c) 2013, 2018, Oracle and/or its affiliates
17+
* Copyright (c) 2013, 2019, Oracle and/or its affiliates
1818
*
1919
* All rights reserved.
2020
*/
@@ -237,5 +237,6 @@ public void testGsub() {
237237
assertEval("gsub('_[bB]','\\\\1_m','b_b')");
238238
assertEval("gsub('(_[bB])','\\\\1_m','b_b')");
239239
assertEval("gsub('b','\\\\1m','Abb')");
240+
assertEval("gsub('@CXX11@', '$(CXX11)', ' CPLUS=\"@CXX11@\" \\'', fixed=FALSE)");
240241
}
241242
}

0 commit comments

Comments
 (0)