Lines 1014-1019
Link Here
|
1014 |
public final static String bundleName = |
1014 |
public final static String bundleName = |
1015 |
"org.eclipse.jdt.internal.compiler.batch.messages"; //$NON-NLS-1$ |
1015 |
"org.eclipse.jdt.internal.compiler.batch.messages"; //$NON-NLS-1$ |
1016 |
|
1016 |
|
|
|
1017 |
public static final String NONE = "none"; //$NON-NLS-1$ |
1017 |
static { |
1018 |
static { |
1018 |
relocalize(); |
1019 |
relocalize(); |
1019 |
} |
1020 |
} |
Lines 1171-1177
Link Here
|
1171 |
} |
1172 |
} |
1172 |
} |
1173 |
} |
1173 |
|
1174 |
|
1174 |
private void addNewEntry(ArrayList paths, String currentClasspathName, ArrayList currentRuleSpecs, String customEncoding, boolean isSourceOnly) { |
1175 |
private void addNewEntry(ArrayList paths, String currentClasspathName, |
|
|
1176 |
ArrayList currentRuleSpecs, String customEncoding, String outputDirName, |
1177 |
boolean isSourceOnly) { |
1175 |
AccessRule[] accessRules = new AccessRule[currentRuleSpecs.size()]; |
1178 |
AccessRule[] accessRules = new AccessRule[currentRuleSpecs.size()]; |
1176 |
boolean rulesOK = true; |
1179 |
boolean rulesOK = true; |
1177 |
Iterator i = currentRuleSpecs.iterator(); |
1180 |
Iterator i = currentRuleSpecs.iterator(); |
Lines 1227-1233
Link Here
|
1227 |
currentClasspathName, |
1230 |
currentClasspathName, |
1228 |
customEncoding, |
1231 |
customEncoding, |
1229 |
isSourceOnly, |
1232 |
isSourceOnly, |
1230 |
accessRuleSet); |
1233 |
accessRuleSet, |
|
|
1234 |
outputDirName); |
1231 |
if (currentClasspath != null) { |
1235 |
if (currentClasspath != null) { |
1232 |
paths.add(currentClasspath); |
1236 |
paths.add(currentClasspath); |
1233 |
} else { |
1237 |
} else { |
Lines 1322-1333
Link Here
|
1322 |
final int INSIDE_BOOTCLASSPATH = 8; |
1326 |
final int INSIDE_BOOTCLASSPATH = 8; |
1323 |
final int INSIDE_MAX_PROBLEMS = 9; |
1327 |
final int INSIDE_MAX_PROBLEMS = 9; |
1324 |
final int INSIDE_EXT_DIRS = 10; |
1328 |
final int INSIDE_EXT_DIRS = 10; |
1325 |
final int INSIDE_SOURCE_PATH = 11; |
1329 |
final int INSIDE_SOURCE_PATH_start = 11; |
|
|
1330 |
final int INSIDE_SOURCE_PATH_bracket = 13; |
1326 |
final int INSIDE_ENDORSED_DIRS = 12; |
1331 |
final int INSIDE_ENDORSED_DIRS = 12; |
1327 |
|
1332 |
|
1328 |
final int DEFAULT = 0; |
1333 |
final int DEFAULT = 0; |
1329 |
final int DEFAULT_SIZE_CLASSPATH = 4; |
1334 |
final int DEFAULT_SIZE_CLASSPATH = 4; |
1330 |
ArrayList bootclasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH); |
1335 |
ArrayList bootclasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH); |
|
|
1336 |
String sourcepathClasspathArg = null; |
1331 |
ArrayList sourcepathClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH); |
1337 |
ArrayList sourcepathClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH); |
1332 |
ArrayList classpaths = new ArrayList(DEFAULT_SIZE_CLASSPATH); |
1338 |
ArrayList classpaths = new ArrayList(DEFAULT_SIZE_CLASSPATH); |
1333 |
ArrayList extdirsClasspaths = null; |
1339 |
ArrayList extdirsClasspaths = null; |
Lines 1412-1419
Link Here
|
1412 |
switch(mode) { |
1418 |
switch(mode) { |
1413 |
case DEFAULT : |
1419 |
case DEFAULT : |
1414 |
customEncoding = null; |
1420 |
customEncoding = null; |
1415 |
if (currentArg.endsWith("]") && !(mode == INSIDE_BOOTCLASSPATH || mode == INSIDE_CLASSPATH || //$NON-NLS-1$ |
1421 |
if (currentArg.endsWith("]") && !(mode == INSIDE_BOOTCLASSPATH || mode == INSIDE_CLASSPATH //$NON-NLS-1$ |
1416 |
mode == INSIDE_SOURCE_PATH) ) { |
1422 |
) ) { |
1417 |
// look for encoding specification |
1423 |
// look for encoding specification |
1418 |
int encodingStart = currentArg.indexOf('[') + 1; |
1424 |
int encodingStart = currentArg.indexOf('[') + 1; |
1419 |
int encodingEnd = currentArg.length() - 1; |
1425 |
int encodingEnd = currentArg.length() - 1; |
Lines 1560-1566
Link Here
|
1560 |
continue; |
1566 |
continue; |
1561 |
} |
1567 |
} |
1562 |
if (currentArg.equals("-sourcepath")) {//$NON-NLS-1$ |
1568 |
if (currentArg.equals("-sourcepath")) {//$NON-NLS-1$ |
1563 |
if (sourcepathClasspaths.size() > 0) { |
1569 |
if (sourcepathClasspathArg != null) { |
1564 |
StringBuffer errorMessage = new StringBuffer(); |
1570 |
StringBuffer errorMessage = new StringBuffer(); |
1565 |
errorMessage.append(currentArg); |
1571 |
errorMessage.append(currentArg); |
1566 |
if ((index + 1) < argCount) { |
1572 |
if ((index + 1) < argCount) { |
Lines 1570-1576
Link Here
|
1570 |
throw new InvalidInputException( |
1576 |
throw new InvalidInputException( |
1571 |
Main.bind("configure.duplicateSourcepath", errorMessage.toString())); //$NON-NLS-1$ |
1577 |
Main.bind("configure.duplicateSourcepath", errorMessage.toString())); //$NON-NLS-1$ |
1572 |
} |
1578 |
} |
1573 |
mode = INSIDE_SOURCE_PATH; |
1579 |
mode = INSIDE_SOURCE_PATH_start; |
1574 |
continue; |
1580 |
continue; |
1575 |
} |
1581 |
} |
1576 |
if (currentArg.equals("-extdirs")) {//$NON-NLS-1$ |
1582 |
if (currentArg.equals("-extdirs")) {//$NON-NLS-1$ |
Lines 1692-1698
Link Here
|
1692 |
this.options.put( |
1698 |
this.options.put( |
1693 |
CompilerOptions.OPTION_SourceFileAttribute, |
1699 |
CompilerOptions.OPTION_SourceFileAttribute, |
1694 |
CompilerOptions.DO_NOT_GENERATE); |
1700 |
CompilerOptions.DO_NOT_GENERATE); |
1695 |
if (length == 7 && debugOption.equals("-g:none")) //$NON-NLS-1$ |
1701 |
if (length == 7 && debugOption.equals("-g:" + NONE)) //$NON-NLS-1$ |
1696 |
continue; |
1702 |
continue; |
1697 |
StringTokenizer tokenizer = |
1703 |
StringTokenizer tokenizer = |
1698 |
new StringTokenizer(debugOption.substring(3, debugOption.length()), ","); //$NON-NLS-1$ |
1704 |
new StringTokenizer(debugOption.substring(3, debugOption.length()), ","); //$NON-NLS-1$ |
Lines 1729-1735
Link Here
|
1729 |
mode = DEFAULT; |
1735 |
mode = DEFAULT; |
1730 |
String warningOption = currentArg; |
1736 |
String warningOption = currentArg; |
1731 |
int length = currentArg.length(); |
1737 |
int length = currentArg.length(); |
1732 |
if (length == 10 && warningOption.equals("-warn:none")) { //$NON-NLS-1$ |
1738 |
if (length == 10 && warningOption.equals("-warn:" + NONE)) { //$NON-NLS-1$ |
1733 |
disableWarnings(); |
1739 |
disableWarnings(); |
1734 |
continue; |
1740 |
continue; |
1735 |
} |
1741 |
} |
Lines 2230-2238
Link Here
|
2230 |
bootclasspaths.add(currentArg); |
2236 |
bootclasspaths.add(currentArg); |
2231 |
mode = DEFAULT; |
2237 |
mode = DEFAULT; |
2232 |
continue; |
2238 |
continue; |
2233 |
case INSIDE_SOURCE_PATH : |
2239 |
case INSIDE_SOURCE_PATH_start: |
2234 |
sourcepathClasspaths.add(currentArg); |
2240 |
sourcepathClasspathArg = currentArg; |
2235 |
mode = DEFAULT; |
2241 |
mode = DEFAULT; |
|
|
2242 |
char[] currentArgChars = currentArg.toCharArray(); |
2243 |
for (int i = 0, length = currentArgChars.length; i < length; |
2244 |
i++) { |
2245 |
switch (currentArgChars[i]) { |
2246 |
case '[': |
2247 |
if (mode == INSIDE_SOURCE_PATH_bracket) { |
2248 |
// WORK error |
2249 |
} else { |
2250 |
mode = INSIDE_SOURCE_PATH_bracket; |
2251 |
} |
2252 |
break; |
2253 |
case ']': |
2254 |
if (mode != INSIDE_SOURCE_PATH_bracket) { |
2255 |
// WORK error |
2256 |
} else { |
2257 |
mode = DEFAULT; |
2258 |
} |
2259 |
break; |
2260 |
} |
2261 |
} |
2262 |
continue; |
2263 |
case INSIDE_SOURCE_PATH_bracket: |
2264 |
sourcepathClasspathArg += " " + currentArg; //$NON-NLS-1$ |
2265 |
mode = DEFAULT; |
2266 |
currentArgChars = currentArg.toCharArray(); |
2267 |
for (int i = 0, length = currentArgChars.length; i < length; |
2268 |
i++) { |
2269 |
switch (currentArgChars[i]) { |
2270 |
case '[': |
2271 |
if (mode == INSIDE_SOURCE_PATH_bracket) { |
2272 |
// WORK error |
2273 |
} else { |
2274 |
mode = INSIDE_SOURCE_PATH_bracket; |
2275 |
} |
2276 |
break; |
2277 |
case ']': |
2278 |
if (mode != INSIDE_SOURCE_PATH_bracket) { |
2279 |
// WORK error |
2280 |
} else { |
2281 |
mode = DEFAULT; |
2282 |
} |
2283 |
break; |
2284 |
} |
2285 |
} |
2236 |
continue; |
2286 |
continue; |
2237 |
case INSIDE_EXT_DIRS : |
2287 |
case INSIDE_EXT_DIRS : |
2238 |
StringTokenizer tokenizer = new StringTokenizer(currentArg, File.pathSeparator, false); |
2288 |
StringTokenizer tokenizer = new StringTokenizer(currentArg, File.pathSeparator, false); |
Lines 2360-2368
Link Here
|
2360 |
if (current != null) { |
2410 |
if (current != null) { |
2361 |
for (int j = 0, max2 = current.length; j < max2; j++) { |
2411 |
for (int j = 0, max2 = current.length; j < max2; j++) { |
2362 |
FileSystem.Classpath classpath = |
2412 |
FileSystem.Classpath classpath = |
2363 |
FileSystem.getClasspath( |
2413 |
FileSystem.getClasspath(current[j].getAbsolutePath(), |
2364 |
current[j].getAbsolutePath(), |
2414 |
null, false, null, null); |
2365 |
null, false, null); |
|
|
2366 |
if (classpath != null) { |
2415 |
if (classpath != null) { |
2367 |
bootclasspaths.add(classpath); |
2416 |
bootclasspaths.add(classpath); |
2368 |
} |
2417 |
} |
Lines 2402-2415
Link Here
|
2402 |
} |
2451 |
} |
2403 |
} |
2452 |
} |
2404 |
} |
2453 |
} |
2405 |
final int sourcepathClasspathsSize = sourcepathClasspaths.size(); |
2454 |
if (sourcepathClasspathArg != null) { |
2406 |
if (sourcepathClasspathsSize != 0) { |
2455 |
processPathEntries(DEFAULT_SIZE_CLASSPATH, sourcepathClasspaths, |
2407 |
String[] paths = new String[sourcepathClasspathsSize]; |
2456 |
sourcepathClasspathArg, customEncoding, true); |
2408 |
sourcepathClasspaths.toArray(paths); |
|
|
2409 |
sourcepathClasspaths.clear(); |
2410 |
for (int i = 0; i < sourcepathClasspathsSize; i++) { |
2411 |
processPathEntries(DEFAULT_SIZE_CLASSPATH, sourcepathClasspaths, paths[i], customEncoding, true); |
2412 |
} |
2413 |
} |
2457 |
} |
2414 |
|
2458 |
|
2415 |
if (filesCount != 0) |
2459 |
if (filesCount != 0) |
Lines 2538-2544
Link Here
|
2538 |
|
2582 |
|
2539 |
if (this.destinationPath == null) { |
2583 |
if (this.destinationPath == null) { |
2540 |
this.generatePackagesStructure = false; |
2584 |
this.generatePackagesStructure = false; |
2541 |
} else if ("none".equals(this.destinationPath)) { //$NON-NLS-1$ |
2585 |
} else if (NONE.equals(this.destinationPath)) { |
2542 |
this.destinationPath = null; |
2586 |
this.destinationPath = null; |
2543 |
} |
2587 |
} |
2544 |
|
2588 |
|
Lines 2802-2811
Link Here
|
2802 |
public void outputClassFiles(CompilationResult unitResult) { |
2846 |
public void outputClassFiles(CompilationResult unitResult) { |
2803 |
if (!((unitResult == null) || (unitResult.hasErrors() && !this.proceedOnError))) { |
2847 |
if (!((unitResult == null) || (unitResult.hasErrors() && !this.proceedOnError))) { |
2804 |
ClassFile[] classFiles = unitResult.getClassFiles(); |
2848 |
ClassFile[] classFiles = unitResult.getClassFiles(); |
2805 |
if (!this.generatePackagesStructure) { |
2849 |
String currentDestinationPath = null; |
2806 |
this.destinationPath = extractDestinationPathFromSourceFile(unitResult); |
2850 |
boolean currentGenerateClasspathStructure = false; |
|
|
2851 |
ClasspathDirectory classpathDirectory; |
2852 |
if ((classpathDirectory = ((CompilationUnit)unitResult.compilationUnit). |
2853 |
classpathDirectory) != null) { |
2854 |
currentDestinationPath = classpathDirectory. |
2855 |
getOutputDirectoryPath(); |
2856 |
currentGenerateClasspathStructure = true; |
2857 |
} |
2858 |
if (currentDestinationPath == null) { |
2859 |
if (this.generatePackagesStructure) { |
2860 |
currentDestinationPath = this.destinationPath; |
2861 |
currentGenerateClasspathStructure = true; |
2862 |
} else { |
2863 |
currentDestinationPath = |
2864 |
extractDestinationPathFromSourceFile(unitResult); |
2865 |
} |
2807 |
} |
2866 |
} |
2808 |
if (this.destinationPath != null) { |
2867 |
if (currentDestinationPath != null) { |
2809 |
for (int i = 0, fileCount = classFiles.length; i < fileCount; i++) { |
2868 |
for (int i = 0, fileCount = classFiles.length; i < fileCount; i++) { |
2810 |
// retrieve the key and the corresponding classfile |
2869 |
// retrieve the key and the corresponding classfile |
2811 |
ClassFile classFile = classFiles[i]; |
2870 |
ClassFile classFile = classFiles[i]; |
Lines 2826-2844
Link Here
|
2826 |
relativeStringName |
2885 |
relativeStringName |
2827 |
})); |
2886 |
})); |
2828 |
ClassFile.writeToDisk( |
2887 |
ClassFile.writeToDisk( |
2829 |
this.generatePackagesStructure, |
2888 |
currentGenerateClasspathStructure, |
2830 |
this.destinationPath, |
2889 |
currentDestinationPath, |
2831 |
relativeStringName, |
2890 |
relativeStringName, |
2832 |
classFile); |
2891 |
classFile); |
2833 |
LookupEnvironment env = this.batchCompiler.lookupEnvironment; |
2892 |
LookupEnvironment env = this.batchCompiler.lookupEnvironment; |
2834 |
if (classFile.isShared) env.classFilePool.release(classFile); |
2893 |
if (classFile.isShared) env.classFilePool.release(classFile); |
2835 |
this.logger.logClassFile( |
2894 |
this.logger.logClassFile( |
2836 |
this.generatePackagesStructure, |
2895 |
currentGenerateClasspathStructure, |
2837 |
this.destinationPath, |
2896 |
currentDestinationPath, |
2838 |
relativeStringName); |
2897 |
relativeStringName); |
2839 |
this.exportedClassFilesCounter++; |
2898 |
this.exportedClassFilesCounter++; |
2840 |
} catch (IOException e) { |
2899 |
} catch (IOException e) { |
2841 |
this.logger.logNoClassFileCreated(this.destinationPath, relativeStringName, e); |
2900 |
this.logger.logNoClassFileCreated(currentDestinationPath, relativeStringName, e); |
2842 |
} |
2901 |
} |
2843 |
} |
2902 |
} |
2844 |
} |
2903 |
} |
Lines 2895-2902
Link Here
|
2895 |
this.logger.flush(); |
2954 |
this.logger.flush(); |
2896 |
} |
2955 |
} |
2897 |
|
2956 |
|
2898 |
private void processPathEntries(final int defaultSize, final ArrayList paths, final String currentPath, String customEncoding, boolean isSourceOnly) { |
2957 |
private void processPathEntries(final int defaultSize, final ArrayList paths, |
|
|
2958 |
final String currentPath, String customEncoding, boolean isSourceOnly) { |
2899 |
String currentClasspathName = null; |
2959 |
String currentClasspathName = null; |
|
|
2960 |
String currentOutputDirName = null; |
2900 |
ArrayList currentRuleSpecs = new ArrayList(defaultSize); |
2961 |
ArrayList currentRuleSpecs = new ArrayList(defaultSize); |
2901 |
StringTokenizer tokenizer = new StringTokenizer(currentPath, |
2962 |
StringTokenizer tokenizer = new StringTokenizer(currentPath, |
2902 |
File.pathSeparator + "[]", true); //$NON-NLS-1$ |
2963 |
File.pathSeparator + "[]", true); //$NON-NLS-1$ |
Lines 2914-2933
Link Here
|
2914 |
// 'path[' 'path1;path2[' |
2975 |
// 'path[' 'path1;path2[' |
2915 |
final int rulesReadyToClose = 6; |
2976 |
final int rulesReadyToClose = 6; |
2916 |
// 'path[rule' 'path[rule1;rule2' |
2977 |
// 'path[rule' 'path[rule1;rule2' |
|
|
2978 |
final int outputDirReadyToClose = 7; |
2979 |
// 'path[-d bin' |
2980 |
final int readyToCloseEndingWithOutputDir = 8; |
2981 |
// 'path[-d bin]' 'path[rule][-d bin]' |
2982 |
final int outputDirStart = 9; |
2983 |
// 'path[rule][' |
2917 |
final int error = 99; |
2984 |
final int error = 99; |
2918 |
int state = start; |
2985 |
int state = start; |
2919 |
String token = null; |
2986 |
String token = null; |
2920 |
while (tokenizer.hasMoreTokens()) { |
2987 |
while (tokenizer.hasMoreTokens() && state != error) { |
2921 |
token = tokenizer.nextToken(); |
2988 |
token = tokenizer.nextToken(); |
2922 |
if (token.equals(File.pathSeparator)) { |
2989 |
if (token.equals(File.pathSeparator)) { |
2923 |
switch (state) { |
2990 |
switch (state) { |
2924 |
case start: |
2991 |
case start: |
|
|
2992 |
case readyToCloseOrOtherEntry: |
2925 |
break; |
2993 |
break; |
2926 |
case readyToClose: |
2994 |
case readyToClose: |
2927 |
case readyToCloseEndingWithRules: |
2995 |
case readyToCloseEndingWithRules: |
2928 |
case readyToCloseOrOtherEntry: |
2996 |
case readyToCloseEndingWithOutputDir: |
2929 |
state = readyToCloseOrOtherEntry; |
2997 |
state = readyToCloseOrOtherEntry; |
2930 |
addNewEntry(paths, currentClasspathName, currentRuleSpecs, customEncoding, isSourceOnly); |
2998 |
addNewEntry(paths, currentClasspathName, currentRuleSpecs, |
|
|
2999 |
customEncoding, currentOutputDirName, isSourceOnly); |
2931 |
currentRuleSpecs.clear(); |
3000 |
currentRuleSpecs.clear(); |
2932 |
break; |
3001 |
break; |
2933 |
case rulesReadyToClose: |
3002 |
case rulesReadyToClose: |
Lines 2941-2946
Link Here
|
2941 |
case readyToClose: |
3010 |
case readyToClose: |
2942 |
state = rulesStart; |
3011 |
state = rulesStart; |
2943 |
break; |
3012 |
break; |
|
|
3013 |
case readyToCloseEndingWithRules: |
3014 |
state = outputDirStart; |
3015 |
break; |
2944 |
default: |
3016 |
default: |
2945 |
state = error; |
3017 |
state = error; |
2946 |
} |
3018 |
} |
Lines 2949-2958
Link Here
|
2949 |
case rulesReadyToClose: |
3021 |
case rulesReadyToClose: |
2950 |
state = readyToCloseEndingWithRules; |
3022 |
state = readyToCloseEndingWithRules; |
2951 |
break; |
3023 |
break; |
|
|
3024 |
case outputDirReadyToClose: |
3025 |
state = readyToCloseEndingWithOutputDir; |
3026 |
break; |
2952 |
default: |
3027 |
default: |
2953 |
state = error; |
3028 |
state = error; |
2954 |
} |
3029 |
} |
2955 |
|
|
|
2956 |
} else { |
3030 |
} else { |
2957 |
// regular word |
3031 |
// regular word |
2958 |
switch (state) { |
3032 |
switch (state) { |
Lines 2961-2981
Link Here
|
2961 |
state = readyToClose; |
3035 |
state = readyToClose; |
2962 |
currentClasspathName = token; |
3036 |
currentClasspathName = token; |
2963 |
break; |
3037 |
break; |
2964 |
case rulesNeedAnotherRule: |
|
|
2965 |
case rulesStart: |
3038 |
case rulesStart: |
|
|
3039 |
if (token.startsWith("-d ")) { //$NON-NLS-1$ |
3040 |
currentOutputDirName = token.substring(3).trim(); |
3041 |
if (NONE.equals(currentOutputDirName)) { |
3042 |
state = error; |
3043 |
} else { |
3044 |
state = outputDirReadyToClose; |
3045 |
} |
3046 |
break; |
3047 |
} // else we proceed with a rule |
3048 |
case rulesNeedAnotherRule: |
2966 |
state = rulesReadyToClose; |
3049 |
state = rulesReadyToClose; |
2967 |
currentRuleSpecs.add(token); |
3050 |
currentRuleSpecs.add(token); |
2968 |
break; |
3051 |
break; |
|
|
3052 |
case outputDirStart: |
3053 |
if (!token.startsWith("-d ")) { //$NON-NLS-1$ |
3054 |
state = error; |
3055 |
} else { |
3056 |
currentOutputDirName = token.substring(3).trim(); |
3057 |
if (NONE.equals(currentOutputDirName)) { |
3058 |
state = error; |
3059 |
} else { |
3060 |
state = outputDirReadyToClose; |
3061 |
} |
3062 |
} |
3063 |
break; |
2969 |
default: |
3064 |
default: |
2970 |
state = error; |
3065 |
state = error; |
2971 |
} |
3066 |
} |
2972 |
} |
3067 |
} |
2973 |
} |
3068 |
} |
2974 |
switch(state) { |
3069 |
switch(state) { |
2975 |
case readyToClose : |
3070 |
case readyToCloseOrOtherEntry: |
2976 |
case readyToCloseEndingWithRules : |
3071 |
break; |
2977 |
case readyToCloseOrOtherEntry : |
3072 |
case readyToClose: |
2978 |
addNewEntry(paths, currentClasspathName, currentRuleSpecs, customEncoding, isSourceOnly); |
3073 |
case readyToCloseEndingWithRules: |
|
|
3074 |
case readyToCloseEndingWithOutputDir: |
3075 |
addNewEntry(paths, currentClasspathName, currentRuleSpecs, |
3076 |
customEncoding, currentOutputDirName, isSourceOnly); |
2979 |
break; |
3077 |
break; |
2980 |
default : |
3078 |
default : |
2981 |
// we go on anyway |
3079 |
// we go on anyway |