diff --git a/android/config.go b/android/config.go index 26c4e6ebd..987bcd64c 100644 --- a/android/config.go +++ b/android/config.go @@ -386,13 +386,14 @@ func NewConfig(srcDir, buildDir string) (Config, error) { func (c *config) fromEnv() error { switch c.Getenv("EXPERIMENTAL_JAVA_LANGUAGE_LEVEL_9") { - case "": - // Nothing, this is the default - case "true": - // Use -source 9 -target 9 + case "", "true": + // Use -source 9 -target 9. This is the default. c.targetOpenJDK9 = true + case "false": + // Use -source 8 -target 8. This is the legacy behaviour. + c.targetOpenJDK9 = false default: - return fmt.Errorf(`Invalid value for EXPERIMENTAL_JAVA_LANGUAGE_LEVEL_9, should be "" or "true"`) + return fmt.Errorf(`Invalid value for EXPERIMENTAL_JAVA_LANGUAGE_LEVEL_9, should be "", "true", or "false"`) } return nil diff --git a/java/java_test.go b/java/java_test.go index f0cb6f8bd..a3499ccd8 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -1095,8 +1095,10 @@ func TestPatchModule(t *testing.T) { ` t.Run("Java language level 8", func(t *testing.T) { - // Test default javac -source 1.8 -target 1.8 - ctx, _ := testJava(t, bp) + // Test with legacy javac -source 1.8 -target 1.8 + config := testConfig(map[string]string{"EXPERIMENTAL_JAVA_LANGUAGE_LEVEL_9": "false"}) + ctx := testContext(bp, nil) + run(t, ctx, config) checkPatchModuleFlag(t, ctx, "foo", "") checkPatchModuleFlag(t, ctx, "bar", "") @@ -1104,10 +1106,8 @@ func TestPatchModule(t *testing.T) { }) t.Run("Java language level 9", func(t *testing.T) { - // Test again with javac -source 9 -target 9 - config := testConfig(map[string]string{"EXPERIMENTAL_JAVA_LANGUAGE_LEVEL_9": "true"}) - ctx := testContext(bp, nil) - run(t, ctx, config) + // Test with default javac -source 9 -target 9 + ctx, _ := testJava(t, bp) checkPatchModuleFlag(t, ctx, "foo", "") expected := "java.base=.:" + buildDir diff --git a/java/sdk_test.go b/java/sdk_test.go index 5001b477b..5e0e592f6 100644 --- a/java/sdk_test.go +++ b/java/sdk_test.go @@ -279,9 +279,9 @@ func TestClasspath(t *testing.T) { } } + // Test with legacy javac -source 1.8 -target 1.8 t.Run("Java language level 8", func(t *testing.T) { - // Test default javac -source 1.8 -target 1.8 - config := testConfig(nil) + config := testConfig(map[string]string{"EXPERIMENTAL_JAVA_LANGUAGE_LEVEL_9": "false"}) if testcase.unbundled { config.TestProductVariables.Unbundled_build = proptools.BoolPtr(true) } @@ -302,9 +302,9 @@ func TestClasspath(t *testing.T) { } }) - // Test again with javac -source 9 -target 9 + // Test with default javac -source 9 -target 9 t.Run("Java language level 9", func(t *testing.T) { - config := testConfig(map[string]string{"EXPERIMENTAL_JAVA_LANGUAGE_LEVEL_9": "true"}) + config := testConfig(nil) if testcase.unbundled { config.TestProductVariables.Unbundled_build = proptools.BoolPtr(true) } @@ -327,7 +327,8 @@ func TestClasspath(t *testing.T) { // Test again with PLATFORM_VERSION_CODENAME=REL t.Run("REL", func(t *testing.T) { - config := testConfig(nil) + // TODO(b/115604102): This test should be rewritten with language level 9 + config := testConfig(map[string]string{"EXPERIMENTAL_JAVA_LANGUAGE_LEVEL_9": "false"}) config.TestProductVariables.Platform_sdk_codename = proptools.StringPtr("REL") config.TestProductVariables.Platform_sdk_final = proptools.BoolPtr(true)