Skip to content

Commit 99f92f4

Browse files
committed
Suppress compilation warnings introduced by injected trace statements (#583)
1 parent f129a82 commit 99f92f4

File tree

4 files changed

+42
-0
lines changed

4 files changed

+42
-0
lines changed

plugins/hardhat.plugin.js

+13
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const {
1414
TASK_COMPILE,
1515
TASK_COMPILE_SOLIDITY_GET_COMPILER_INPUT,
1616
TASK_COMPILE_SOLIDITY_GET_COMPILATION_JOB_FOR_FILE,
17+
TASK_COMPILE_SOLIDITY_LOG_COMPILATION_ERRORS
1718
} = require("hardhat/builtin-tasks/task-names");
1819

1920
// Toggled true for `coverage` task only.
@@ -62,6 +63,18 @@ task(TASK_COMPILE_SOLIDITY_GET_COMPILATION_JOB_FOR_FILE).setAction(async (_, __,
6263
return compilationJob;
6364
});
6465

66+
// Suppress compilation warnings because injected trace function triggers
67+
// complaint about unused variable
68+
subtask(TASK_COMPILE_SOLIDITY_LOG_COMPILATION_ERRORS).setAction(async (_, __, runSuper) => {
69+
const defaultWarn = console.warn;
70+
71+
if (measureCoverage) {
72+
console.warn = () => {};
73+
}
74+
await runSuper();
75+
console.warn = defaultWarn;
76+
});
77+
6578
/**
6679
* Coverage task implementation
6780
* @param {HardhatUserArgs} args

plugins/resources/truffle.utils.js

+19
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,29 @@ function normalizeConfig(config){
208208
return config;
209209
}
210210

211+
/**
212+
* Replacement logger which filters out compilation warnings triggered by injected trace
213+
* function definitions.
214+
*
215+
* @type {Object}
216+
*/
217+
const filteredLogger = {
218+
log: (val) => {
219+
const loggable = typeof val === 'string' &&
220+
!val.includes('Warning:') && // solc msg grep
221+
!process.env.SILENT; // unit tests
222+
223+
loggable && console.log(val);
224+
},
225+
warn: console.warn,
226+
error: console.error
227+
}
228+
211229
module.exports = {
212230
getTestFilePaths,
213231
setNetwork,
214232
setNetworkFrom,
215233
loadLibrary,
216234
normalizeConfig,
235+
filteredLogger
217236
}

plugins/truffle.plugin.js

+9
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,20 @@ async function plugin(config){
9090
path.basename(config.contracts_build_directory)
9191
);
9292

93+
// Filter compilation warnings
94+
const defaultLogger = config.logger;
95+
if (!config.verbose){
96+
config.logger = truffleUtils.filteredLogger;
97+
}
98+
9399
config.all = true;
100+
config.strict = false;
94101
config.compilers.solc.settings.optimizer.enabled = false;
95102

96103
// Compile Instrumented Contracts
97104
await truffle.contracts.compile(config);
105+
config.logger = defaultLogger;
106+
98107
await api.onCompileComplete(config);
99108

100109
config.test_files = await truffleUtils.getTestFilePaths(config);

test/units/truffle/flags.js

+1
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ describe('Truffle Plugin: command line options', function() {
204204
truffleConfig.logger = mock.testLogger;
205205

206206
truffleConfig.temp = 'special_location';
207+
truffleConfig.verbose = true;
207208

208209
mock.install('Simple', 'simple.js', solcoverConfig);
209210
await plugin(truffleConfig);

0 commit comments

Comments
 (0)