[core] Revamp the language version alias APIs

- The old experimental API allowed calls such as
`addVersions(langHandler, false)` which were not only invalid, but would
throw an `ArrayIndexOutOfBoundsException`, so we split the name
(required) and the aliases (varargs, and therefore optional)
 - In doing so, I was bothered by parameter order. The version name is
the most significant change when setting 2 versions for a language, so I
liked it being first as the old `addVersion` method did, so I moved
that ahead.
 - With that, I now had 2 methods that where equivalent, except one
allowed for varargs and the other didn't… so I merged them. This is not
100% binary compatible, but it is source compatible (that is, unless you
used reflection, all valid calls to the old non-experimental method
still work).
This commit is contained in:
Juan Martín Sotuyo Dodero
2020-05-14 16:03:45 -03:00
parent 2bce93c8b6
commit 8c7a49eb69
5 changed files with 31 additions and 36 deletions

View File

@ -19,12 +19,12 @@ public class JavaLanguageModule extends BaseLanguageModule {
super(NAME, null, TERSE_NAME, JavaRuleChainVisitor.class, "java");
addVersion("1.3", new JavaLanguageHandler(3), false);
addVersion("1.4", new JavaLanguageHandler(4), false);
addVersions(new JavaLanguageHandler(5), false, "1.5", "5");
addVersions(new JavaLanguageHandler(6), false, "1.6", "6");
addVersions(new JavaLanguageHandler(7), false, "1.7", "7");
addVersions(new JavaLanguageHandler(8), false, "1.8", "8");
addVersions(new JavaLanguageHandler(9), false, "9", "1.9");
addVersions(new JavaLanguageHandler(10), false, "10", "1.10");
addVersion("1.5", new JavaLanguageHandler(5), false, "5");
addVersion("1.6", new JavaLanguageHandler(6), false, "6");
addVersion("1.7", new JavaLanguageHandler(7), false, "7");
addVersion("1.8", new JavaLanguageHandler(8), false, "8");
addVersion("9", new JavaLanguageHandler(9), false, "1.9");
addVersion("10", new JavaLanguageHandler(10), false, "1.10");
addVersion("11", new JavaLanguageHandler(11), false);
addVersion("12", new JavaLanguageHandler(12), false);
addVersion("13", new JavaLanguageHandler(13), false);

View File

@ -35,25 +35,26 @@ public class LanguageVersionTest extends AbstractLanguageVersionTest {
{ JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, "1.8",
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("1.8"), },
{ JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, "9",
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("9"), },
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("9"), },
{ JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, "10",
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("10"), },
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("10"), },
{ JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, "11",
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("11"), },
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("11"), },
{ JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, "12",
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("12"), },
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("12"), },
{ JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, "12-preview",
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("12-preview"), },
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("12-preview"), },
{ JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, "13",
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("13"), },
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("13"), },
{ JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, "13-preview",
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("13-preview"), },
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("13-preview"), },
{ JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, "14",
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("14"), },
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("14"), },
{ JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, "14-preview",
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("14-preview"), },
LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("14-preview"), },
// this one won't be found: case sensitive!
{ "JAVA", "JAVA", "1.7", null, }, });
{ "JAVA", "JAVA", "1.7", null, },
});
}
}