fix switching to a github file from the solidity warning

pull/518/head
yann300 4 years ago
parent 8f4f9118b4
commit af310de32d
  1. 21
      apps/remix-ide-e2e/src/tests/solidityImport.test.ts
  2. 32
      apps/remix-ide/src/app/ui/renderer.js

@ -57,8 +57,22 @@ module.exports = {
browser browser
.addFile('Untitled7.sol', sources[6]['browser/Untitled7.sol']) .addFile('Untitled7.sol', sources[6]['browser/Untitled7.sol'])
.clickLaunchIcon('fileExplorers') .clickLaunchIcon('fileExplorers')
.verifyContracts(['test11', 'ERC20', 'SafeMath'], {wait: 10000}) .verifyContracts(['test11', 'ERC20', 'SafeMath'], {wait: 10000})
.end() },
'Test switch to a github import from a solidity warning': function (browser: NightwatchBrowser) {
browser
.setSolidityCompilerVersion('soljson-v0.7.4+commit.3f05b770.js')
.addFile('Untitled8.sol', sources[7]['browser/Untitled8.sol'])
.clickLaunchIcon('fileExplorers')
.clickLaunchIcon('solidity')
.waitForElementPresent('[data-id="compiledErrors"] div:nth-child(3)')
.click('[data-id="compiledErrors"] div:nth-child(3)') // select the second warning which point to ERC20 code
.getEditorValue((content) => {
browser.assert.ok(content.indexOf(`contract ERC20 is Context, IERC20`) != -1,
'current displayed content should be from the ERC20 source code')
})
.end()
}, },
tearDown: sauce tearDown: sauce
} }
@ -85,5 +99,8 @@ const sources = [
}, },
{ {
'browser/Untitled7.sol': {content: 'import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/master/contracts/token/ERC20/ERC20.sol"; contract test11 {}'} 'browser/Untitled7.sol': {content: 'import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/master/contracts/token/ERC20/ERC20.sol"; contract test11 {}'}
},
{
'browser/Untitled8.sol': {content: 'import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/master/contracts/token/ERC20/ERC20.sol"; contract test12 {}'}
} }
] ]

@ -81,18 +81,24 @@ Renderer.prototype.error = function (message, container, opt) {
text = message.innerText text = message.innerText
} }
var errLocation = text.match(/^([^:]*):([0-9]*):(([0-9]*):)? /) // ^ e.g:
if ((!opt.errFile || !opt.errCol || !opt.errLine) && errLocation) { // browser/gm.sol: Warning: Source file does not specify required compiler version! Consider adding "pragma solidity ^0.6.12
errLocation = parseRegExError(errLocation) // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.2.0/contracts/introspection/IERC1820Registry.sol:3:1: ParserError: Source file requires different compiler version (current compiler is 0.7.4+commit.3f05b770.Emscripten.clang) - note that nightly builds are considered to be strictly less than the released version
opt.errFile = errLocation.errFile
opt.errLine = errLocation.errLine // extract line / column
opt.errCol = errLocation.errCol let position = text.match(/^(.*?):([0-9]*?):([0-9]*?)?/)
} opt.errLine = position ? position[2] : -1
opt.errCol = position ? position[3] : -1
if (!opt.noAnnotations && errLocation) { // extract file
this._error(errLocation.errFile, { position = text.match(/^(https:.*?|http:.*?|.*?):/)
row: errLocation.errLine, opt.errFile = position ? position[1] : ''
column: errLocation.errCol,
if (!opt.noAnnotations && opt.errFile) {
this._error(opt.errFile, {
row: opt.errLine,
column: opt.errCol,
text: text, text: text,
type: opt.type type: opt.type
}) })
@ -107,7 +113,7 @@ Renderer.prototype.error = function (message, container, opt) {
$error.click((ev) => { $error.click((ev) => {
if (opt.click) { if (opt.click) {
opt.click(message) opt.click(message)
} else if (opt.errFile && opt.errLine && opt.errCol) { } else if (opt.errFile !== undefined && opt.errLine !== undefined && opt.errCol !== undefined) {
this._errorClick(opt.errFile, opt.errLine, opt.errCol) this._errorClick(opt.errFile, opt.errLine, opt.errCol)
} }
}) })
@ -123,7 +129,7 @@ function parseRegExError (err) {
return { return {
errFile: err[1], errFile: err[1],
errLine: parseInt(err[2], 10) - 1, errLine: parseInt(err[2], 10) - 1,
errCol: err[4] ? parseInt(err[4], 10) : 0 errCol: err[3] ? parseInt(err[3], 10) : 0
} }
} }

Loading…
Cancel
Save