1 /*******************************************************************************
2 * Copyright (c) 2000, 2001, 2002 International Business Machines Corp. and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Common Public License v0.5
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/cpl-v05.html
9 * IBM Corporation - initial API and implementation
10 ******************************************************************************/
11 package net.sourceforge.phpdt.internal.compiler.impl;
13 import java.io.ByteArrayInputStream;
14 import java.io.InputStreamReader;
15 import java.io.UnsupportedEncodingException;
18 import net.sourceforge.phpdt.internal.compiler.Compiler;
19 import net.sourceforge.phpdt.internal.compiler.lookup.ProblemReasons;
20 import net.sourceforge.phpdt.internal.compiler.problem.ProblemSeverities;
23 public class CompilerOptions implements ProblemReasons, ProblemSeverities {
28 public static final String OPTION_LocalVariableAttribute = "org.eclipse.jdt.core.compiler.debug.localVariable"; //$NON-NLS-1$
29 public static final String OPTION_LineNumberAttribute = "org.eclipse.jdt.core.compiler.debug.lineNumber"; //$NON-NLS-1$
30 public static final String OPTION_SourceFileAttribute = "org.eclipse.jdt.core.compiler.debug.sourceFile"; //$NON-NLS-1$
31 public static final String OPTION_PreserveUnusedLocal = "org.eclipse.jdt.core.compiler.codegen.unusedLocal"; //$NON-NLS-1$
32 public static final String OPTION_ReportUnreachableCode = "org.eclipse.jdt.core.compiler.problem.unreachableCode"; //$NON-NLS-1$
33 public static final String OPTION_ReportInvalidImport = "org.eclipse.jdt.core.compiler.problem.invalidImport"; //$NON-NLS-1$
34 public static final String OPTION_ReportMethodWithConstructorName = "org.eclipse.jdt.core.compiler.problem.methodWithConstructorName"; //$NON-NLS-1$
35 public static final String OPTION_ReportOverridingPackageDefaultMethod = "org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod"; //$NON-NLS-1$
36 public static final String OPTION_ReportDeprecation = "org.eclipse.jdt.core.compiler.problem.deprecation"; //$NON-NLS-1$
37 public static final String OPTION_ReportHiddenCatchBlock = "org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock"; //$NON-NLS-1$
38 public static final String OPTION_ReportUnusedLocal = "org.eclipse.jdt.core.compiler.problem.unusedLocal"; //$NON-NLS-1$
39 public static final String OPTION_ReportUnusedParameter = "org.eclipse.jdt.core.compiler.problem.unusedParameter"; //$NON-NLS-1$
40 public static final String OPTION_ReportUnusedImport = "org.eclipse.jdt.core.compiler.problem.unusedImport"; //$NON-NLS-1$
41 public static final String OPTION_ReportSyntheticAccessEmulation = "org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation"; //$NON-NLS-1$
42 public static final String OPTION_ReportNonExternalizedStringLiteral = "org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral"; //$NON-NLS-1$
43 public static final String OPTION_Source = "org.eclipse.jdt.core.compiler.source"; //$NON-NLS-1$
44 public static final String OPTION_TargetPlatform = "org.eclipse.jdt.core.compiler.codegen.targetPlatform"; //$NON-NLS-1$
45 public static final String OPTION_ReportAssertIdentifier = "org.eclipse.jdt.core.compiler.problem.assertIdentifier"; //$NON-NLS-1$
46 public static final String OPTION_Compliance = "org.eclipse.jdt.core.compiler.compliance"; //$NON-NLS-1$
47 public static final String OPTION_Encoding = "org.eclipse.jdt.core.encoding"; //$NON-NLS-1$
48 public static final String OPTION_MaxProblemPerUnit = "org.eclipse.jdt.core.compiler.maxProblemPerUnit"; //$NON-NLS-1$
50 /* should surface ??? */
51 public static final String OPTION_PrivateConstructorAccess = "org.eclipse.jdt.core.compiler.codegen.constructorAccessEmulation"; //$NON-NLS-1$
54 * Possible values for configurable options
56 public static final String GENERATE = "generate";//$NON-NLS-1$
57 public static final String DO_NOT_GENERATE = "do not generate"; //$NON-NLS-1$
58 public static final String PRESERVE = "preserve"; //$NON-NLS-1$
59 public static final String OPTIMIZE_OUT = "optimize out"; //$NON-NLS-1$
60 public static final String VERSION_1_1 = "1.1"; //$NON-NLS-1$
61 public static final String VERSION_1_2 = "1.2"; //$NON-NLS-1$
62 public static final String VERSION_1_3 = "1.3"; //$NON-NLS-1$
63 public static final String VERSION_1_4 = "1.4"; //$NON-NLS-1$
64 public static final String ERROR = "error"; //$NON-NLS-1$
65 public static final String WARNING = "warning"; //$NON-NLS-1$
66 public static final String IGNORE = "ignore"; //$NON-NLS-1$
69 * Bit mask for configurable problems (error/warning threshold)
71 public static final int UnreachableCode = 0x100;
72 public static final int ImportProblem = 0x400;
73 public static final int MethodWithConstructorName = 0x1000;
74 public static final int OverriddenPackageDefaultMethod = 0x2000;
75 public static final int UsingDeprecatedAPI = 0x4000;
76 public static final int MaskedCatchBlock = 0x8000;
77 public static final int UnusedLocalVariable = 0x10000;
78 public static final int UnusedArgument = 0x20000;
79 public static final int NoImplicitStringConversion = 0x40000;
80 public static final int AccessEmulation = 0x80000;
81 public static final int NonExternalizedString = 0x100000;
82 public static final int AssertUsedAsAnIdentifier = 0x200000;
83 public static final int UnusedImport = 0x400000;
85 // Default severity level for handlers
86 public int errorThreshold = UnreachableCode | ImportProblem;
87 public int warningThreshold =
88 MethodWithConstructorName | OverriddenPackageDefaultMethod
89 | UsingDeprecatedAPI | MaskedCatchBlock
90 | AssertUsedAsAnIdentifier | NoImplicitStringConversion;
93 public static final int Source = 1; // SourceFileAttribute
94 public static final int Lines = 2; // LineNumberAttribute
95 public static final int Vars = 4; // LocalVariableTableAttribute
97 // By default only lines and source attributes are generated.
98 public int produceDebugAttributes = Lines | Source;
101 // JDK 1.1, 1.2, 1.3 or 1.4
102 public static final int JDK1_1 = 0;
103 public static final int JDK1_2 = 1;
104 public static final int JDK1_3 = 2;
105 public static final int JDK1_4 = 3;
107 public int targetJDK = JDK1_1; // default generates for JVM1.1
108 public int complianceLevel = JDK1_3; // by default be compliant with 1.3
110 // toggle private access emulation for 1.2 (constr. accessor has extra arg on constructor) or 1.3 (make private constructor default access when access needed)
111 public boolean isPrivateConstructorAccessChangingVisibility = false; // by default, follows 1.2
114 public boolean assertMode = false; //1.3 behavior by default
116 // source encoding format
117 public String defaultEncoding = null; // will use the platform default encoding
119 // print what unit is being processed
120 public boolean verbose = Compiler.DEBUG;
122 // indicates if reference info is desired
123 public boolean produceReferenceInfo = true;
125 // indicates if unused/optimizable local variables need to be preserved (debugging purpose)
126 public boolean preserveAllLocalVariables = false;
128 // indicates whether literal expressions are inlined at parse-time or not
129 public boolean parseLiteralExpressionsAsConstants = true;
131 // exception raised for unresolved compile errors
132 public String runtimeExceptionNameForCompileError = "java.lang.Error"; //$NON-NLS-1$
134 // max problems per compilation unit
135 public int maxProblemsPerUnit = 100; // no more than 100 problems per default
138 * Initializing the compiler options with defaults
140 public CompilerOptions(){
144 * Initializing the compiler options with external settings
146 public CompilerOptions(Map settings){
148 if (settings == null) return;
150 // filter options which are related to the compiler component
151 Object[] entries = settings.entrySet().toArray();
152 for (int i = 0, max = entries.length; i < max; i++){
153 Map.Entry entry = (Map.Entry)entries[i];
154 if (!(entry.getKey() instanceof String)) continue;
155 if (!(entry.getValue() instanceof String)) continue;
156 String optionID = (String) entry.getKey();
157 String optionValue = (String) entry.getValue();
159 // Local variable attribute
160 if(optionID.equals(OPTION_LocalVariableAttribute)){
161 if (optionValue.equals(GENERATE)) {
162 this.produceDebugAttributes |= Vars;
163 } else if (optionValue.equals(DO_NOT_GENERATE)){
164 this.produceDebugAttributes &= ~Vars;
168 // Line number attribute
169 if(optionID.equals(OPTION_LineNumberAttribute)) {
170 if (optionValue.equals(GENERATE)) {
171 this.produceDebugAttributes |= Lines;
172 } else if (optionValue.equals(DO_NOT_GENERATE)) {
173 this.produceDebugAttributes &= ~Lines;
177 // Source file attribute
178 if(optionID.equals(OPTION_SourceFileAttribute)) {
179 if (optionValue.equals(GENERATE)) {
180 this.produceDebugAttributes |= Source;
181 } else if (optionValue.equals(DO_NOT_GENERATE)) {
182 this.produceDebugAttributes &= ~Source;
186 // Preserve unused local
187 if(optionID.equals(OPTION_PreserveUnusedLocal)){
188 if (optionValue.equals(PRESERVE)) {
189 this.preserveAllLocalVariables = true;
190 } else if (optionValue.equals(OPTIMIZE_OUT)) {
191 this.preserveAllLocalVariables = false;
195 // Report unreachable code
196 if(optionID.equals(OPTION_ReportUnreachableCode)){
197 if (optionValue.equals(ERROR)) {
198 this.errorThreshold |= UnreachableCode;
199 this.warningThreshold &= ~UnreachableCode;
200 } else if (optionValue.equals(WARNING)) {
201 this.errorThreshold &= ~UnreachableCode;
202 this.warningThreshold |= UnreachableCode;
203 } else if (optionValue.equals(IGNORE)) {
204 this.errorThreshold &= ~UnreachableCode;
205 this.warningThreshold &= ~UnreachableCode;
209 // Report invalid import
210 if(optionID.equals(OPTION_ReportInvalidImport)){
211 if (optionValue.equals(ERROR)) {
212 this.errorThreshold |= ImportProblem;
213 this.warningThreshold &= ~ImportProblem;
214 } else if (optionValue.equals(WARNING)) {
215 this.errorThreshold &= ~ImportProblem;
216 this.warningThreshold |= ImportProblem;
217 } else if (optionValue.equals(IGNORE)) {
218 this.errorThreshold &= ~ImportProblem;
219 this.warningThreshold &= ~ImportProblem;
223 // Define the target JDK tag for .classfiles
224 if(optionID.equals(OPTION_TargetPlatform)){
225 if (optionValue.equals(VERSION_1_1)) {
226 this.targetJDK = JDK1_1;
227 } else if (optionValue.equals(VERSION_1_2)) {
228 this.targetJDK = JDK1_2;
229 } else if (optionValue.equals(VERSION_1_3)) {
230 this.targetJDK = JDK1_3;
231 } else if (optionValue.equals(VERSION_1_4)) {
232 this.targetJDK = JDK1_4;
236 // Define the JDK compliance level
237 if(optionID.equals(OPTION_Compliance)){
238 if (optionValue.equals(VERSION_1_1)) {
239 this.complianceLevel = JDK1_1;
240 } else if (optionValue.equals(VERSION_1_2)) {
241 this.complianceLevel = JDK1_2;
242 } else if (optionValue.equals(VERSION_1_3)) {
243 this.complianceLevel = JDK1_3;
244 } else if (optionValue.equals(VERSION_1_4)) {
245 this.complianceLevel = JDK1_4;
249 // Private constructor access emulation (extra arg vs. visibility change)
250 if(optionID.equals(OPTION_PrivateConstructorAccess)){
251 if (optionValue.equals(VERSION_1_1)) {
252 this.isPrivateConstructorAccessChangingVisibility = false;
253 } else if (optionValue.equals(VERSION_1_2)) {
254 this.isPrivateConstructorAccessChangingVisibility = false;
255 } else if (optionValue.equals(VERSION_1_3)) {
256 this.isPrivateConstructorAccessChangingVisibility = true;
257 } else if (optionValue.equals(VERSION_1_4)) {
258 this.isPrivateConstructorAccessChangingVisibility = true;
262 // Report method with constructor name
263 if(optionID.equals(OPTION_ReportMethodWithConstructorName)){
264 if (optionValue.equals(ERROR)) {
265 this.errorThreshold |= MethodWithConstructorName;
266 this.warningThreshold &= ~MethodWithConstructorName;
267 } else if (optionValue.equals(WARNING)) {
268 this.errorThreshold &= ~MethodWithConstructorName;
269 this.warningThreshold |= MethodWithConstructorName;
270 } else if (optionValue.equals(IGNORE)) {
271 this.errorThreshold &= ~MethodWithConstructorName;
272 this.warningThreshold &= ~MethodWithConstructorName;
276 // Report overriding package default method
277 if(optionID.equals(OPTION_ReportOverridingPackageDefaultMethod)){
278 if (optionValue.equals(ERROR)) {
279 this.errorThreshold |= OverriddenPackageDefaultMethod;
280 this.warningThreshold &= ~OverriddenPackageDefaultMethod;
281 } else if (optionValue.equals(WARNING)) {
282 this.errorThreshold &= ~OverriddenPackageDefaultMethod;
283 this.warningThreshold |= OverriddenPackageDefaultMethod;
284 } else if (optionValue.equals(IGNORE)) {
285 this.errorThreshold &= ~OverriddenPackageDefaultMethod;
286 this.warningThreshold &= ~OverriddenPackageDefaultMethod;
290 // Report deprecation
291 if(optionID.equals(OPTION_ReportDeprecation)){
292 if (optionValue.equals(ERROR)) {
293 this.errorThreshold |= UsingDeprecatedAPI;
294 this.warningThreshold &= ~UsingDeprecatedAPI;
295 } else if (optionValue.equals(WARNING)) {
296 this.errorThreshold &= ~UsingDeprecatedAPI;
297 this.warningThreshold |= UsingDeprecatedAPI;
298 } else if (optionValue.equals(IGNORE)) {
299 this.errorThreshold &= ~UsingDeprecatedAPI;
300 this.warningThreshold &= ~UsingDeprecatedAPI;
304 // Report hidden catch block
305 if(optionID.equals(OPTION_ReportHiddenCatchBlock)){
306 if (optionValue.equals(ERROR)) {
307 this.errorThreshold |= MaskedCatchBlock;
308 this.warningThreshold &= ~MaskedCatchBlock;
309 } else if (optionValue.equals(WARNING)) {
310 this.errorThreshold &= ~MaskedCatchBlock;
311 this.warningThreshold |= MaskedCatchBlock;
312 } else if (optionValue.equals(IGNORE)) {
313 this.errorThreshold &= ~MaskedCatchBlock;
314 this.warningThreshold &= ~MaskedCatchBlock;
318 // Report unused local variable
319 if(optionID.equals(OPTION_ReportUnusedLocal)){
320 if (optionValue.equals(ERROR)) {
321 this.errorThreshold |= UnusedLocalVariable;
322 this.warningThreshold &= ~UnusedLocalVariable;
323 } else if (optionValue.equals(WARNING)) {
324 this.errorThreshold &= ~UnusedLocalVariable;
325 this.warningThreshold |= UnusedLocalVariable;
326 } else if (optionValue.equals(IGNORE)) {
327 this.errorThreshold &= ~UnusedLocalVariable;
328 this.warningThreshold &= ~UnusedLocalVariable;
332 // Report unused parameter
333 if(optionID.equals(OPTION_ReportUnusedParameter)){
334 if (optionValue.equals(ERROR)) {
335 this.errorThreshold |= UnusedArgument;
336 this.warningThreshold &= ~UnusedArgument;
337 } else if (optionValue.equals(WARNING)) {
338 this.errorThreshold &= ~UnusedArgument;
339 this.warningThreshold |= UnusedArgument;
340 } else if (optionValue.equals(IGNORE)) {
341 this.errorThreshold &= ~UnusedArgument;
342 this.warningThreshold &= ~UnusedArgument;
346 // Report unused parameter
347 if(optionID.equals(OPTION_ReportUnusedImport)){
348 if (optionValue.equals(ERROR)) {
349 this.errorThreshold |= UnusedImport;
350 this.warningThreshold &= ~UnusedImport;
351 } else if (optionValue.equals(WARNING)) {
352 this.errorThreshold &= ~UnusedImport;
353 this.warningThreshold |= UnusedImport;
354 } else if (optionValue.equals(IGNORE)) {
355 this.errorThreshold &= ~UnusedImport;
356 this.warningThreshold &= ~UnusedImport;
360 // Report synthetic access emulation
361 if(optionID.equals(OPTION_ReportSyntheticAccessEmulation)){
362 if (optionValue.equals(ERROR)) {
363 this.errorThreshold |= AccessEmulation;
364 this.warningThreshold &= ~AccessEmulation;
365 } else if (optionValue.equals(WARNING)) {
366 this.errorThreshold &= ~AccessEmulation;
367 this.warningThreshold |= AccessEmulation;
368 } else if (optionValue.equals(IGNORE)) {
369 this.errorThreshold &= ~AccessEmulation;
370 this.warningThreshold &= ~AccessEmulation;
374 // Report non-externalized string literals
375 if(optionID.equals(OPTION_ReportNonExternalizedStringLiteral)){
376 if (optionValue.equals(ERROR)) {
377 this.errorThreshold |= NonExternalizedString;
378 this.warningThreshold &= ~NonExternalizedString;
379 } else if (optionValue.equals(WARNING)) {
380 this.errorThreshold &= ~NonExternalizedString;
381 this.warningThreshold |= NonExternalizedString;
382 } else if (optionValue.equals(IGNORE)) {
383 this.errorThreshold &= ~NonExternalizedString;
384 this.warningThreshold &= ~NonExternalizedString;
388 // Report usage of 'assert' as an identifier
389 if(optionID.equals(OPTION_ReportAssertIdentifier)){
390 if (optionValue.equals(ERROR)) {
391 this.errorThreshold |= AssertUsedAsAnIdentifier;
392 this.warningThreshold &= ~AssertUsedAsAnIdentifier;
393 } else if (optionValue.equals(WARNING)) {
394 this.errorThreshold &= ~AssertUsedAsAnIdentifier;
395 this.warningThreshold |= AssertUsedAsAnIdentifier;
396 } else if (optionValue.equals(IGNORE)) {
397 this.errorThreshold &= ~AssertUsedAsAnIdentifier;
398 this.warningThreshold &= ~AssertUsedAsAnIdentifier;
402 // Set the source compatibility mode (assertions)
403 if(optionID.equals(OPTION_Source)){
404 if (optionValue.equals(VERSION_1_3)) {
405 this.assertMode = false;
406 } else if (optionValue.equals(VERSION_1_4)) {
407 this.assertMode = true;
411 // Set the default encoding format
412 if(optionID.equals(OPTION_Encoding)){
413 if (optionValue.length() == 0){
414 this.defaultEncoding = null;
416 try { // ignore unsupported encoding
417 new InputStreamReader(new ByteArrayInputStream(new byte[0]), optionValue);
418 this.defaultEncoding = optionValue;
419 } catch(UnsupportedEncodingException e){
424 // Set the threshold for problems per unit
425 if(optionID.equals(OPTION_MaxProblemPerUnit)){
427 int val = Integer.parseInt(optionValue);
428 if (val >= 0) this.maxProblemsPerUnit = val;
429 } catch(NumberFormatException e){
436 public int getTargetJDK() {
437 return this.targetJDK;
440 public int getNonExternalizedStringLiteralSeverity() {
441 if((warningThreshold & NonExternalizedString) != 0)
443 if((errorThreshold & NonExternalizedString) != 0)
448 public void produceReferenceInfo(boolean flag) {
449 this.produceReferenceInfo = flag;
452 public void setVerboseMode(boolean flag) {
456 public String toString() {
459 StringBuffer buf = new StringBuffer("CompilerOptions:"); //$NON-NLS-1$
460 if ((produceDebugAttributes & Vars) != 0){
461 buf.append("\n-local variables debug attributes: ON"); //$NON-NLS-1$
463 buf.append("\n-local variables debug attributes: OFF"); //$NON-NLS-1$
465 if ((produceDebugAttributes & Lines) != 0){
466 buf.append("\n-line number debug attributes: ON"); //$NON-NLS-1$
468 buf.append("\n-line number debug attributes: OFF"); //$NON-NLS-1$
470 if ((produceDebugAttributes & Source) != 0){
471 buf.append("\n-source debug attributes: ON"); //$NON-NLS-1$
473 buf.append("\n-source debug attributes: OFF"); //$NON-NLS-1$
475 if (preserveAllLocalVariables){
476 buf.append("\n-preserve all local variables: ON"); //$NON-NLS-1$
478 buf.append("\n-preserve all local variables: OFF"); //$NON-NLS-1$
480 if ((errorThreshold & UnreachableCode) != 0){
481 buf.append("\n-unreachable code: ERROR"); //$NON-NLS-1$
483 if ((warningThreshold & UnreachableCode) != 0){
484 buf.append("\n-unreachable code: WARNING"); //$NON-NLS-1$
486 buf.append("\n-unreachable code: IGNORE"); //$NON-NLS-1$
489 if ((errorThreshold & ImportProblem) != 0){
490 buf.append("\n-import problem: ERROR"); //$NON-NLS-1$
492 if ((warningThreshold & ImportProblem) != 0){
493 buf.append("\n-import problem: WARNING"); //$NON-NLS-1$
495 buf.append("\n-import problem: IGNORE"); //$NON-NLS-1$
498 if ((errorThreshold & MethodWithConstructorName) != 0){
499 buf.append("\n-method with constructor name: ERROR"); //$NON-NLS-1$
501 if ((warningThreshold & MethodWithConstructorName) != 0){
502 buf.append("\n-method with constructor name: WARNING"); //$NON-NLS-1$
504 buf.append("\n-method with constructor name: IGNORE"); //$NON-NLS-1$
507 if ((errorThreshold & OverriddenPackageDefaultMethod) != 0){
508 buf.append("\n-overridden package default method: ERROR"); //$NON-NLS-1$
510 if ((warningThreshold & OverriddenPackageDefaultMethod) != 0){
511 buf.append("\n-overridden package default method: WARNING"); //$NON-NLS-1$
513 buf.append("\n-overridden package default method: IGNORE"); //$NON-NLS-1$
516 if ((errorThreshold & UsingDeprecatedAPI) != 0){
517 buf.append("\n-deprecation: ERROR"); //$NON-NLS-1$
519 if ((warningThreshold & UsingDeprecatedAPI) != 0){
520 buf.append("\n-deprecation: WARNING"); //$NON-NLS-1$
522 buf.append("\n-deprecation: IGNORE"); //$NON-NLS-1$
525 if ((errorThreshold & MaskedCatchBlock) != 0){
526 buf.append("\n-masked catch block: ERROR"); //$NON-NLS-1$
528 if ((warningThreshold & MaskedCatchBlock) != 0){
529 buf.append("\n-masked catch block: WARNING"); //$NON-NLS-1$
531 buf.append("\n-masked catch block: IGNORE"); //$NON-NLS-1$
534 if ((errorThreshold & UnusedLocalVariable) != 0){
535 buf.append("\n-unused local variable: ERROR"); //$NON-NLS-1$
537 if ((warningThreshold & UnusedLocalVariable) != 0){
538 buf.append("\n-unused local variable: WARNING"); //$NON-NLS-1$
540 buf.append("\n-unused local variable: IGNORE"); //$NON-NLS-1$
543 if ((errorThreshold & UnusedArgument) != 0){
544 buf.append("\n-unused parameter: ERROR"); //$NON-NLS-1$
546 if ((warningThreshold & UnusedArgument) != 0){
547 buf.append("\n-unused parameter: WARNING"); //$NON-NLS-1$
549 buf.append("\n-unused parameter: IGNORE"); //$NON-NLS-1$
552 if ((errorThreshold & UnusedImport) != 0){
553 buf.append("\n-unused import: ERROR"); //$NON-NLS-1$
555 if ((warningThreshold & UnusedImport) != 0){
556 buf.append("\n-unused import: WARNING"); //$NON-NLS-1$
558 buf.append("\n-unused import: IGNORE"); //$NON-NLS-1$
561 if ((errorThreshold & AccessEmulation) != 0){
562 buf.append("\n-synthetic access emulation: ERROR"); //$NON-NLS-1$
564 if ((warningThreshold & AccessEmulation) != 0){
565 buf.append("\n-synthetic access emulation: WARNING"); //$NON-NLS-1$
567 buf.append("\n-synthetic access emulation: IGNORE"); //$NON-NLS-1$
570 if ((errorThreshold & NonExternalizedString) != 0){
571 buf.append("\n-non externalized string: ERROR"); //$NON-NLS-1$
573 if ((warningThreshold & NonExternalizedString) != 0){
574 buf.append("\n-non externalized string: WARNING"); //$NON-NLS-1$
576 buf.append("\n-non externalized string: IGNORE"); //$NON-NLS-1$
581 buf.append("\n-target JDK: 1.1"); //$NON-NLS-1$
584 buf.append("\n-target JDK: 1.2"); //$NON-NLS-1$
587 buf.append("\n-target JDK: 1.3"); //$NON-NLS-1$
590 buf.append("\n-target JDK: 1.4"); //$NON-NLS-1$
593 switch(complianceLevel){
595 buf.append("\n-compliance JDK: 1.1"); //$NON-NLS-1$
598 buf.append("\n-compliance JDK: 1.2"); //$NON-NLS-1$
601 buf.append("\n-compliance JDK: 1.3"); //$NON-NLS-1$
604 buf.append("\n-compliance JDK: 1.4"); //$NON-NLS-1$
607 if (isPrivateConstructorAccessChangingVisibility){
608 buf.append("\n-private constructor access emulation: extra argument"); //$NON-NLS-1$
610 buf.append("\n-private constructor access emulation: make default access"); //$NON-NLS-1$
612 buf.append("\n-verbose : " + (verbose ? "ON" : "OFF")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
613 buf.append("\n-produce reference info : " + (produceReferenceInfo ? "ON" : "OFF")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
614 buf.append("\n-parse literal expressions as constants : " + (parseLiteralExpressionsAsConstants ? "ON" : "OFF")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
615 buf.append("\n-runtime exception name for compile error : " + runtimeExceptionNameForCompileError); //$NON-NLS-1$
616 buf.append("\n-encoding : " + (defaultEncoding == null ? "<default>" : defaultEncoding)); //$NON-NLS-1$ //$NON-NLS-2$
617 return buf.toString();