fix(solc): can parse secondary source locations (#849)
This commit is contained in:
parent
2b178e9cf7
commit
5fefb2b721
|
@ -1733,7 +1733,7 @@ pub struct Error {
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
pub source_location: Option<SourceLocation>,
|
pub source_location: Option<SourceLocation>,
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
||||||
pub secondary_source_locations: Vec<SourceLocation>,
|
pub secondary_source_locations: Vec<SecondarySourceLocation>,
|
||||||
pub r#type: String,
|
pub r#type: String,
|
||||||
pub component: String,
|
pub component: String,
|
||||||
pub severity: Severity,
|
pub severity: Severity,
|
||||||
|
@ -1845,6 +1845,13 @@ pub struct SourceLocation {
|
||||||
pub file: String,
|
pub file: String,
|
||||||
pub start: i32,
|
pub start: i32,
|
||||||
pub end: i32,
|
pub end: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
|
||||||
|
pub struct SecondarySourceLocation {
|
||||||
|
pub file: Option<String>,
|
||||||
|
pub start: Option<i32>,
|
||||||
|
pub end: Option<i32>,
|
||||||
pub message: Option<String>,
|
pub message: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -378,3 +378,26 @@ fn can_flatten_file_with_duplicates() {
|
||||||
assert_eq!(result.matches("contract FooBar {").count(), 1);
|
assert_eq!(result.matches("contract FooBar {").count(), 1);
|
||||||
assert_eq!(result.matches(";").count(), 1);
|
assert_eq!(result.matches(";").count(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_detect_type_error() {
|
||||||
|
let project = TempProject::<MinimalCombinedArtifacts>::dapptools().unwrap();
|
||||||
|
|
||||||
|
project
|
||||||
|
.add_source(
|
||||||
|
"Contract",
|
||||||
|
r#"
|
||||||
|
pragma solidity ^0.8.10;
|
||||||
|
|
||||||
|
contract Contract {
|
||||||
|
function xyz() public {
|
||||||
|
require(address(0), "Error");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let compiled = project.compile().unwrap();
|
||||||
|
assert!(compiled.has_compiler_errors());
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue