Auto add --enable-preview vmArgs for java 12 project (#561)

* Auto add --enable-preview vmArgs for java 12 project

Signed-off-by: Jinbo Wang <jinbwan@microsoft.com>

* make tslint happy

Signed-off-by: Jinbo Wang <jinbwan@microsoft.com>

* Use new generic api to check project preview flag

Signed-off-by: Jinbo Wang <jinbwan@microsoft.com>

* Address review comments

Signed-off-by: Jinbo Wang <jinbwan@microsoft.com>

* Make tslint happy

Signed-off-by: Jinbo Wang <jinbwan@microsoft.com>
This commit is contained in:
Jinbo Wang 2019-04-15 13:31:14 +08:00 committed by GitHub
parent 99357f28bb
commit 01f7735b72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 0 deletions

View File

@ -27,6 +27,8 @@ export const JAVA_RESOLVE_MAINMETHOD = "vscode.java.resolveMainMethod";
export const JAVA_INFER_LAUNCH_COMMAND_LENGTH = "vscode.java.inferLaunchCommandLength";
export const JAVA_CHECK_PROJECT_SETTINGS = "vscode.java.checkProjectSettings";
export function executeJavaLanguageServerCommand(...rest) {
// TODO: need to handle error and trace telemetry
return vscode.commands.executeCommand(JAVA_EXECUTE_WORKSPACE_COMMAND, ...rest);

View File

@ -186,6 +186,10 @@ export class JavaDebugConfigurationProvider implements vscode.DebugConfiguration
// Add the default launch options to the config.
config.cwd = config.cwd || _.get(folder, "uri.fsPath");
// Auto add '--enable-preview' vmArgs if the java project enables COMPILER_PB_ENABLE_PREVIEW_FEATURES flag.
if (await lsPlugin.detectPreviewFlag(config.mainClass, config.projectName)) {
config.vmArgs = (config.vmArgs || "") + " --enable-preview";
}
} else if (config.request === "attach") {
if (!config.hostName || !config.port) {
throw new utility.UserError({

View File

@ -61,3 +61,22 @@ export function validateLaunchConfig(workspaceUri: vscode.Uri, mainClass: string
export function inferLaunchCommandLength(config: vscode.DebugConfiguration): Promise<number> {
return <Promise<number>>commands.executeJavaLanguageServerCommand(commands.JAVA_INFER_LAUNCH_COMMAND_LENGTH, JSON.stringify(config));
}
export function checkProjectSettings(className: string, projectName: string, inheritedOptions: boolean, expectedOptions: {[key: string]: string}):
Promise<boolean> {
return <Promise<boolean>>commands.executeJavaLanguageServerCommand(
commands.JAVA_CHECK_PROJECT_SETTINGS, JSON.stringify({
className,
projectName,
inheritedOptions,
expectedOptions,
}));
}
const COMPILER_PB_ENABLE_PREVIEW_FEATURES: string = "org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures";
export async function detectPreviewFlag(className: string, projectName: string): Promise<boolean> {
const expectedOptions = {
[COMPILER_PB_ENABLE_PREVIEW_FEATURES]: "enabled",
};
return await checkProjectSettings(className, projectName, true, expectedOptions);
}