1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-16 05:25:21 +02:00

Bug 579982: More removing of cached Matcher objects

This follows on from 1c404b050d

Change-Id: I764ba6a96aa650f38ef90521b2a67cc87903b2d5
This commit is contained in:
Jonah Graham 2022-05-20 11:44:03 -04:00
parent ed59ec722b
commit 937b4d5798
4 changed files with 64 additions and 24 deletions

View file

@ -81,6 +81,7 @@
</p>
<ol>
<li><a href="#newUIAbstractPage">org.eclipse.cdt.ui.newui.AbstractPage reduced visibility of many fields</a></li>
<li><a href="#ArgletsMatcher2">java.util.regex.Matcher use in JSONCDB API will be removed</a></li>
</ol>
<p>
@ -580,6 +581,18 @@
See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=579666" target="_blank">Bug 579666</a>.
</p>
<h3>2. <a name="ArgletsMatcher2">java.util.regex.Matcher use in JSONCDB API will be removed</a></h3>
<p>
The following method will be removed from the API as it encourages non-safe constructs of reusing Matchers instead of Patterns.
</p>
<ul>
<li>org.eclipse.cdt.jsoncdb.core.participant.Arglets.BuiltinDetectionArgsGeneric.processArgument(IArgumentCollector, String, Matcher[])
- use org.eclipse.cdt.jsoncdb.core.participant.Arglets.BuiltinDetectionArgsGeneric.processArgument(IArgumentCollector, String, Pattern[]) instead</li>
</ul>
<p>
See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=579982" target="_blank">Bug 579982</a>.
</p>
</body>

View file

@ -4,7 +4,7 @@ Bundle-Name: %bundleName
Bundle-Description: %bundleDescription
Bundle-Copyright: %Bundle-Copyright
Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.core;singleton:=true
Bundle-Version: 1.2.100.qualifier
Bundle-Version: 1.3.0.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11

View file

@ -387,10 +387,30 @@ public final class Arglets {
* @since 1.2
*/
public static abstract class BuiltinDetectionArgsGeneric extends BuiltinDetctionArgsGeneric {
/**
* @see org.eclipse.cdt.jsoncdb.core.participant.IArglet#processArgument(IArgumentCollector,
* IPath, String)
* @since 1.3
*/
protected final int processArgument(IArgumentCollector resultCollector, String argsLine,
Pattern[] optionPatterns) {
for (Pattern pattern : optionPatterns) {
Matcher matcher = pattern.matcher(argsLine);
if (matcher.lookingAt()) {
resultCollector.addBuiltinDetectionArgument(matcher.group());
return matcher.end();
}
}
return 0;// no input consumed
}
/**
* @see org.eclipse.cdt.jsoncdb.core.participant.IArglet#processArgument(IArgumentCollector,
* IPath, String)
* @deprecated Use {@link #processArgument(IArgumentCollector, String, Pattern[])} instead.
*/
@Deprecated(forRemoval = true)
@Override
protected final int processArgument(IArgumentCollector resultCollector, String argsLine,
Matcher[] optionMatchers) {
@ -450,24 +470,25 @@ public final class Arglets {
*/
public static class Sysroot_GCC extends BuiltinDetectionArgsGeneric implements IArglet {
@SuppressWarnings("nls")
private static final Matcher[] optionMatchers = {
private static final Pattern[] optionPatterns = {
/* "--sysroot=" quoted directory */
Pattern.compile("--sysroot=" + REGEX_INCLUDEPATH_QUOTED_DIR).matcher(EMPTY_STR),
Pattern.compile("--sysroot=" + REGEX_INCLUDEPATH_QUOTED_DIR), //
/* "--sysroot=" unquoted directory */
Pattern.compile("--sysroot=" + REGEX_INCLUDEPATH_UNQUOTED_DIR).matcher(EMPTY_STR),
Pattern.compile("--sysroot=" + REGEX_INCLUDEPATH_UNQUOTED_DIR), //
/* "-isysroot=" quoted directory */
Pattern.compile("-isysroot=" + REGEX_INCLUDEPATH_QUOTED_DIR).matcher(EMPTY_STR),
Pattern.compile("-isysroot=" + REGEX_INCLUDEPATH_QUOTED_DIR), //
/* "-isysroot=" unquoted directory */
Pattern.compile("-isysroot=" + REGEX_INCLUDEPATH_UNQUOTED_DIR).matcher(EMPTY_STR),
Pattern.compile("-isysroot=" + REGEX_INCLUDEPATH_UNQUOTED_DIR), //
/* "--no-sysroot-prefix" */
Pattern.compile("--no-sysroot-prefix").matcher(EMPTY_STR) };
Pattern.compile("--no-sysroot-prefix"), //
};
/*-
* @see org.eclipse.cdt.jsoncdb.IArglet#processArgs(java.lang.String)
* @see org.eclipse.cdt.jsoncdb.core.participant.IArglet#processArgs(java.lang.String)
*/
@Override
public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
return processArgument(resultCollector, argsLine, optionMatchers);
return processArgument(resultCollector, argsLine, optionPatterns);
}
}
@ -477,16 +498,18 @@ public final class Arglets {
* @since 1.1
*/
public static class Target_Clang extends BuiltinDetectionArgsGeneric implements IArglet {
private static final Matcher[] optionMatchers = {
@SuppressWarnings("nls")
private static final Pattern[] optionPatterns = {
/* "--target=" triple */
Pattern.compile("--target=\\w+(-\\w+)*").matcher(EMPTY_STR) }; //$NON-NLS-1$
Pattern.compile("--target=\\w+(-\\w+)*") //
};
/*-
* @see de.marw.cmake.cdt.lsp.IArglet#processArgs(java.lang.String)
*/
@Override
public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
return processArgument(resultCollector, argsLine, optionMatchers);
return processArgument(resultCollector, argsLine, optionPatterns);
}
}
@ -497,20 +520,23 @@ public final class Arglets {
*/
public static class LangStd_GCC extends BuiltinDetectionArgsGeneric implements IArglet {
@SuppressWarnings("nls")
private static final Matcher[] optionMatchers = { Pattern.compile("-std=\\S+").matcher(EMPTY_STR),
Pattern.compile("-ansi").matcher(EMPTY_STR),
Pattern.compile("-fPIC", Pattern.CASE_INSENSITIVE).matcher(EMPTY_STR),
Pattern.compile("-fPIE", Pattern.CASE_INSENSITIVE).matcher(EMPTY_STR),
Pattern.compile("-fstack-protector\\S+").matcher(EMPTY_STR),
Pattern.compile("-march=\\\\S+").matcher(EMPTY_STR), Pattern.compile("-mcpu=\\\\S+").matcher(EMPTY_STR),
Pattern.compile("-mtune=\\\\S+").matcher(EMPTY_STR), Pattern.compile("-pthread").matcher(EMPTY_STR), };
private static final Pattern[] optionPatterns = { //
Pattern.compile("-std=\\S+"), //
Pattern.compile("-ansi"), //
Pattern.compile("-fPIC", Pattern.CASE_INSENSITIVE), //
Pattern.compile("-fPIE", Pattern.CASE_INSENSITIVE), //
Pattern.compile("-fstack-protector\\S+"), //
Pattern.compile("-march=\\\\S+"), //
Pattern.compile("-mcpu=\\\\S+"), //
Pattern.compile("-mtune=\\\\S+"), //
Pattern.compile("-pthread"), };
/*-
* @see org.eclipse.cdt.jsoncdb.IArglet#processArgs(java.lang.String)
*/
@Override
public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
return processArgument(resultCollector, argsLine, optionMatchers);
return processArgument(resultCollector, argsLine, optionPatterns);
}
}

View file

@ -9,7 +9,6 @@
package org.eclipse.cdt.jsoncdb.nvidia;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.cdt.jsoncdb.core.participant.Arglets.BuiltinDetectionArgsGeneric;
@ -21,14 +20,16 @@ import org.eclipse.core.runtime.IPath;
* standard {@code --std=xxx}.
*/
public class NvccLangStdArglet extends BuiltinDetectionArgsGeneric implements IArglet {
private static final Matcher[] optionMatchers = { Pattern.compile("--std \\S+").matcher(""), //$NON-NLS-1$ //$NON-NLS-2$
Pattern.compile("-std \\S+").matcher(""), }; //$NON-NLS-1$ //$NON-NLS-2$
@SuppressWarnings("nls")
private static final Pattern[] optionPatterns = { Pattern.compile("--std \\S+"), //
Pattern.compile("-std \\S+"), //
};
/*-
* @see org.eclipse.cdt.jsoncdb.IArglet#processArgs(java.lang.String)
*/
@Override
public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
return processArgument(resultCollector, argsLine, optionMatchers);
return processArgument(resultCollector, argsLine, optionPatterns);
}
}