Report errors locally

This commit is contained in:
Leonid Logvinov
2018-04-02 11:28:27 +03:00
parent b2d6ac8dba
commit fbc39614c0

View File

@@ -45,7 +45,6 @@ export class Compiler {
private _artifactsDir: string;
// This get's set in the beggining of `compileAsync` function. It's not called from a constructor, but it's the only public method of that class and could as well be.
private _contractSources!: ContractSources;
private _solcErrors: Set<string> = new Set();
private _specifiedContracts: Set<string> = new Set();
private _contractSourceData: ContractSourceData = {};
/**
@@ -114,9 +113,6 @@ export class Compiler {
for (const fileName of fileNames) {
await this._compileContractAsync(fileName);
}
this._solcErrors.forEach(errMsg => {
logUtils.log(errMsg);
});
}
/**
* Compiles contract and saves artifact to artifactsDir.
@@ -181,13 +177,20 @@ export class Compiler {
if (!_.isUndefined(compiled.errors)) {
const SOLIDITY_WARNING_PREFIX = 'Warning';
const isError = (errorOrWarning: string) => !errorOrWarning.includes(SOLIDITY_WARNING_PREFIX);
const isWarning = (errorOrWarning: string) => errorOrWarning.includes(SOLIDITY_WARNING_PREFIX);
const errors = _.filter(compiled.errors, isError);
_.forEach(compiled.errors, errMsg => {
const normalizedErrMsg = getNormalizedErrMsg(errMsg);
this._solcErrors.add(normalizedErrMsg);
});
const warnings = _.filter(compiled.errors, isWarning);
if (!_.isEmpty(errors)) {
return;
errors.forEach(errMsg => {
const normalizedErrMsg = getNormalizedErrMsg(errMsg);
logUtils.log(normalizedErrMsg);
});
process.exit(1);
} else {
warnings.forEach(errMsg => {
const normalizedErrMsg = getNormalizedErrMsg(errMsg);
logUtils.log(normalizedErrMsg);
});
}
}
const contractName = path.basename(fileName, constants.SOLIDITY_FILE_EXTENSION);