blob: cc392fda477ae41d1b093556a0954d59fefd7eb8 [file] [log] [blame]
import java.util.ArrayList;
import java.util.List;
import org.checkerframework.checker.interning.qual.*;
// Test case lifted from plume.Options
public class Options {
public void minimal(String s) {
String arg = ""; // interned here
@Interned String arg2 = arg;
arg += s; // no longer interned
// :: error: (assignment)
arg2 = arg;
}
public void minimal2(char c) {
String arg = ""; // interned here
@Interned String arg2 = arg;
arg += c; // no longer interned
// :: error: (assignment)
arg2 = arg;
}
public String[] otherparse(String args) {
// Split the args string on whitespace boundaries accounting for quoted strings.
args = args.trim();
List<String> arg_list = new ArrayList<>();
String arg = "";
char active_quote = 0;
// for (int ii = 0; ii < args.length(); ii++) {
char ch = args.charAt(0);
// arg = arg + ch;
// if ((ch == '\'') || (ch == '"')) {
arg += ch;
// }
// }
// :: error: (assignment)
@Interned String arg2 = arg;
if (!arg.equals("")) {
arg_list.add(arg);
}
String[] argsArray = arg_list.toArray(new String[arg_list.size()]);
return null;
}
public String[] parse(String args) {
// Split the args string on whitespace boundaries accounting for quoted strings.
args = args.trim();
List<String> arg_list = new ArrayList<>();
String arg = "";
char active_quote = 0;
for (int ii = 0; ii < args.length(); ii++) {
char ch = args.charAt(ii);
if ((ch == '\'') || (ch == '"')) {
arg += ch;
ii++;
while ((ii < args.length()) && (args.charAt(ii) != ch)) {
arg += args.charAt(ii++);
}
arg += ch;
} else if (Character.isWhitespace(ch)) {
// System.out.printf ("adding argument '%s'%n", arg);
arg_list.add(arg);
arg = "";
while ((ii < args.length()) && Character.isWhitespace(args.charAt(ii))) {
ii++;
}
if (ii < args.length()) {
ii--;
}
} else { // must be part of current argument
arg += ch;
}
}
// :: error: (assignment)
@Interned String arg2 = arg;
if (!arg.equals("")) {
arg_list.add(arg);
}
String[] argsArray = arg_list.toArray(new String[arg_list.size()]);
return null;
}
}