fix(solc): skip artifacts check for files without artifacts (#1018)
This commit is contained in:
parent
beffe32f15
commit
6b0a1f7911
|
@ -638,6 +638,10 @@ impl<'a, T: ArtifactOutput> ArtifactsCacheInner<'a, T> {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// only check artifact's existence if the file generated artifacts.
|
||||||
|
// e.g. a solidity file consisting only of import statements (like interfaces that
|
||||||
|
// re-export) do not create artifacts
|
||||||
|
if !entry.artifacts.is_empty() {
|
||||||
if !entry.contains_version(version) {
|
if !entry.contains_version(version) {
|
||||||
tracing::trace!(
|
tracing::trace!(
|
||||||
"missing linked artifacts for source file `{}` for version \"{}\"",
|
"missing linked artifacts for source file `{}` for version \"{}\"",
|
||||||
|
@ -656,6 +660,7 @@ impl<'a, T: ArtifactOutput> ArtifactsCacheInner<'a, T> {
|
||||||
}) {
|
}) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// all things match, can be reused
|
// all things match, can be reused
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -683,3 +683,51 @@ fn can_recompile_with_changes() {
|
||||||
assert!(compiled.find("A").is_some());
|
assert!(compiled.find("A").is_some());
|
||||||
assert!(compiled.find("B").is_some());
|
assert!(compiled.find("B").is_some());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_recompile_unchanged_with_empty_files() {
|
||||||
|
let tmp = TempProject::dapptools().unwrap();
|
||||||
|
|
||||||
|
tmp.add_source(
|
||||||
|
"A",
|
||||||
|
r#"
|
||||||
|
pragma solidity ^0.8.10;
|
||||||
|
import "./B.sol";
|
||||||
|
contract A {}
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
tmp.add_source(
|
||||||
|
"B",
|
||||||
|
r#"
|
||||||
|
pragma solidity ^0.8.10;
|
||||||
|
import "./C.sol";
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let c = r#"
|
||||||
|
pragma solidity ^0.8.10;
|
||||||
|
contract C {}
|
||||||
|
"#;
|
||||||
|
tmp.add_source("C", c).unwrap();
|
||||||
|
|
||||||
|
let compiled = tmp.compile().unwrap();
|
||||||
|
assert!(!compiled.has_compiler_errors());
|
||||||
|
assert!(compiled.find("A").is_some());
|
||||||
|
assert!(compiled.find("C").is_some());
|
||||||
|
|
||||||
|
let compiled = tmp.compile().unwrap();
|
||||||
|
assert!(compiled.find("A").is_some());
|
||||||
|
assert!(compiled.find("C").is_some());
|
||||||
|
assert!(compiled.is_unchanged());
|
||||||
|
|
||||||
|
// modify C.sol
|
||||||
|
tmp.add_source("C", format!("{}\n", c)).unwrap();
|
||||||
|
let compiled = tmp.compile().unwrap();
|
||||||
|
assert!(!compiled.has_compiler_errors());
|
||||||
|
assert!(!compiled.is_unchanged());
|
||||||
|
assert!(compiled.find("A").is_some());
|
||||||
|
assert!(compiled.find("C").is_some());
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue