diff options
Diffstat (limited to 'lib/compilers/argument-parsers.js')
-rw-r--r-- | lib/compilers/argument-parsers.js | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/lib/compilers/argument-parsers.js b/lib/compilers/argument-parsers.js index 2ff065a59..1047677ce 100644 --- a/lib/compilers/argument-parsers.js +++ b/lib/compilers/argument-parsers.js @@ -24,7 +24,7 @@ import _ from 'underscore'; -import { logger } from '../logger'; +import {logger} from '../logger'; import * as utils from '../utils'; export class BaseParser { @@ -39,14 +39,13 @@ export class BaseParser { utils.eachLine(stdout, line => { const match = line.match(optionRegex); if (!match) { - if (previousOption && (line.trim().length > 0)) { + if (previousOption && line.trim().length > 0) { if (options[previousOption].description.endsWith('-')) options[previousOption].description += line.trim(); else { if (options[previousOption].description.length > 0) options[previousOption].description += ' ' + line.trim(); - else - options[previousOption].description = line.trim(); + else options[previousOption].description = line.trim(); } } else { previousOption = false; @@ -69,8 +68,7 @@ export class BaseParser { static async getOptions(compiler, helpArg) { const optionFinder = /^\s*(--?[\d+,<=>[\]a-z|-]*)\s*(.*)/i; const result = await compiler.execCompilerCached(compiler.compiler.exe, [helpArg]); - const options = result.code === 0 - ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {}; + const options = result.code === 0 ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {}; compiler.possibleArguments.populateOptions(options); return options; } @@ -86,8 +84,11 @@ export class GCCParser extends BaseParser { logger.debug(`gcc-like compiler options: ${keys.join(' ')}`); if (BaseParser.hasSupport(options, '-masm=')) { // -masm= may be available but unsupported by the compiler. - const res = await compiler.execCompilerCached(compiler.compiler.exe, - ['-fsyntax-only', '--target-help', '-masm=intel']); + const res = await compiler.execCompilerCached(compiler.compiler.exe, [ + '-fsyntax-only', + '--target-help', + '-masm=intel', + ]); if (res.code === 0) { compiler.compiler.intelAsm = '-masm=intel'; compiler.compiler.supportsIntel = true; @@ -110,8 +111,10 @@ export class GCCParser extends BaseParser { static async parse(compiler) { const results = await Promise.all([ + GCCParser.getOptions(compiler, '-fsyntax-only --help'), GCCParser.getOptions(compiler, '-fsyntax-only --target-help'), GCCParser.getOptions(compiler, '-fsyntax-only --help=common'), + GCCParser.getOptions(compiler, '-fsyntax-only --help=warnings'), GCCParser.getOptions(compiler, '-fsyntax-only --help=optimizers'), ]); const options = Object.assign({}, ...results); @@ -122,8 +125,7 @@ export class GCCParser extends BaseParser { static async getOptions(compiler, helpArg) { const optionFinder = /^\s*(--?[\d+,<=>[\]a-z|-]*)\s*(.*)/i; const result = await compiler.execCompilerCached(compiler.compiler.exe, helpArg.split(' ')); - const options = result.code === 0 - ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {}; + const options = result.code === 0 ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {}; compiler.possibleArguments.populateOptions(options); return options; } @@ -188,8 +190,7 @@ export class ISPCParser extends BaseParser { static async getOptions(compiler, helpArg) { const result = await compiler.execCompilerCached(compiler.compiler.exe, [helpArg]); const optionFinder = /^\s*\[(--?[\d\s()+,/<=>a-z{|}-]*)]\s*(.*)/i; - const options = result.code === 0 - ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {}; + const options = result.code === 0 ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {}; compiler.possibleArguments.populateOptions(options); return options; } @@ -226,19 +227,18 @@ export class VCParser extends BaseParser { let previousOption = false; let options = {}; - const matchLine = (line) => { + const matchLine = line => { if (line.startsWith('/?')) return; const match = line.match(optionRegex); if (!match) { - if (previousOption && (line.trim().length > 0)) { + if (previousOption && line.trim().length > 0) { if (options[previousOption].description.endsWith(':')) options[previousOption].description += ' ' + line.trim(); else { if (options[previousOption].description.length > 0) options[previousOption].description += ', ' + line.trim(); - else - options[previousOption].description = line.trim(); + else options[previousOption].description = line.trim(); } } else { previousOption = false; @@ -262,7 +262,7 @@ export class VCParser extends BaseParser { let col1; let col2; - if ((line.length > 39) && (line[40] === '/')) { + if (line.length > 39 && line[40] === '/') { col1 = line.substr(0, 39); col2 = line.substr(40); } else { @@ -280,8 +280,7 @@ export class VCParser extends BaseParser { static async getOptions(compiler, helpArg) { const result = await compiler.execCompilerCached(compiler.compiler.exe, [helpArg]); const optionFinder = /^\s*(\/[\w#+,.:<=>[\]{|}-]*)\s*(.*)/i; - const options = result.code === 0 - ? this.parseLines(result.stdout, optionFinder) : {}; + const options = result.code === 0 ? this.parseLines(result.stdout, optionFinder) : {}; compiler.possibleArguments.populateOptions(options); return options; } |