Support Java 6 as a source language. For 1.5 VMs, rewrite v6 class files to v5. Review by: tobyr Issue: 2223 git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@3648 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java b/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java index fca9dfe..f9e19a7 100644 --- a/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java +++ b/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java
@@ -211,10 +211,14 @@ CompilerOptions.IGNORE); settings.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.GENERATE); - settings.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); - settings.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); + + /* + * Wish we could target 1.5 class file, but this isn't allowed. :( + */ + settings.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_6); + settings.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_6); settings.put(CompilerOptions.OPTION_TargetPlatform, - CompilerOptions.VERSION_1_5); + CompilerOptions.VERSION_1_6); // This is needed by TypeOracleBuilder to parse metadata. if (enableDocCommentSupport) {
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/ForceClassVersion15.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/ForceClassVersion15.java new file mode 100644 index 0000000..b6839cc --- /dev/null +++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/ForceClassVersion15.java
@@ -0,0 +1,38 @@ +/* + * Copyright 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.google.gwt.dev.shell.rewrite; + +import com.google.gwt.dev.asm.ClassAdapter; +import com.google.gwt.dev.asm.ClassVisitor; +import com.google.gwt.dev.asm.Opcodes; + +/** + * Performs any rewriting necessary to ensure that class files are 1.5 + * compatible. + */ +class ForceClassVersion15 extends ClassAdapter { + + public ForceClassVersion15(ClassVisitor v) { + super(v); + } + + @Override + public void visit(final int version, final int access, final String name, + final String signature, final String superName, final String[] interfaces) { + assert (version >= Opcodes.V1_5 && version <= Opcodes.V1_6); + super.visit(Opcodes.V1_5, access, name, signature, superName, interfaces); + } +}
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/HostedModeClassRewriter.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/HostedModeClassRewriter.java index 9dbcefb..418429b 100644 --- a/dev/core/src/com/google/gwt/dev/shell/rewrite/HostedModeClassRewriter.java +++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/HostedModeClassRewriter.java
@@ -187,6 +187,10 @@ v = new RewriteJsniMethods(v); + if (Double.parseDouble(System.getProperty("java.class.version")) < Opcodes.V1_6) { + v = new ForceClassVersion15(v); + } + new ClassReader(classBytes).accept(v, 0); return writer.toByteArray(); }