import java.util.ArrayList; import java.util.List; public class FlowInterning { // @skip-test // Look at issue 47 // public boolean isSame(Object a, Object b) { // return ((a == null) // ? (a == b) // : (a.equals(b))); // } public void testAppendingChar() { String arg = ""; arg += ' '; // Interning Checker should NOT suggest == here. if (!arg.equals("")) ; } 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>(); 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; } } // Interning Checker should NOT suggest == here. if (!arg.equals("")) { arg_list.add(arg); } String[] argsArray = arg_list.toArray(new String[arg_list.size()]); return argsArray; } }