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:
parent
99357f28bb
commit
01f7735b72
|
@ -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);
|
||||
|
|
|
@ -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({
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue