fix extra spacing (#1149)
This commit is contained in:
parent
a99dd1328b
commit
8dd553a5eb
|
@ -311,7 +311,7 @@ impl ProjectPathsConfig {
|
||||||
for import in imports.iter() {
|
for import in imports.iter() {
|
||||||
let import_path = self.resolve_import(target_dir, import.data())?;
|
let import_path = self.resolve_import(target_dir, import.data())?;
|
||||||
let s = self.flatten_node(&import_path, graph, imported, true, true, true)?;
|
let s = self.flatten_node(&import_path, graph, imported, true, true, true)?;
|
||||||
let import_content = s.trim().as_bytes();
|
let import_content = s.as_bytes();
|
||||||
let import_content_len = import_content.len() as isize;
|
let import_content_len = import_content.len() as isize;
|
||||||
let (start, end) = import.loc_by_offset(offset);
|
let (start, end) = import.loc_by_offset(offset);
|
||||||
content.splice(start..end, import_content.iter().copied());
|
content.splice(start..end, import_content.iter().copied());
|
||||||
|
@ -321,6 +321,7 @@ impl ProjectPathsConfig {
|
||||||
let result = String::from_utf8(content).map_err(|err| {
|
let result = String::from_utf8(content).map_err(|err| {
|
||||||
SolcError::msg(format!("failed to convert extended bytes to string: {}", err))
|
SolcError::msg(format!("failed to convert extended bytes to string: {}", err))
|
||||||
})?;
|
})?;
|
||||||
|
let result = utils::RE_THREE_OR_MORE_NEWLINES.replace_all(&result, "\n\n").into_owned();
|
||||||
|
|
||||||
Ok(result)
|
Ok(result)
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,9 @@ pub static RE_SOL_PRAGMA_VERSION: Lazy<Regex> =
|
||||||
pub static RE_SOL_SDPX_LICENSE_IDENTIFIER: Lazy<Regex> =
|
pub static RE_SOL_SDPX_LICENSE_IDENTIFIER: Lazy<Regex> =
|
||||||
Lazy::new(|| Regex::new(r"///?\s*SPDX-License-Identifier:\s*(?P<license>.+)").unwrap());
|
Lazy::new(|| Regex::new(r"///?\s*SPDX-License-Identifier:\s*(?P<license>.+)").unwrap());
|
||||||
|
|
||||||
|
/// A regex used to remove extra lines in flatenned files
|
||||||
|
pub static RE_THREE_OR_MORE_NEWLINES: Lazy<Regex> = Lazy::new(|| Regex::new("\n{3,}").unwrap());
|
||||||
|
|
||||||
/// Returns all path parts from any solidity import statement in a string,
|
/// Returns all path parts from any solidity import statement in a string,
|
||||||
/// `import "./contracts/Contract.sol";` -> `"./contracts/Contract.sol"`.
|
/// `import "./contracts/Contract.sol";` -> `"./contracts/Contract.sol"`.
|
||||||
///
|
///
|
||||||
|
|
|
@ -492,8 +492,11 @@ contract C { }
|
||||||
result,
|
result,
|
||||||
r#"
|
r#"
|
||||||
pragma solidity ^0.8.10;
|
pragma solidity ^0.8.10;
|
||||||
|
|
||||||
contract C { }
|
contract C { }
|
||||||
|
|
||||||
contract B { }
|
contract B { }
|
||||||
|
|
||||||
contract A { }
|
contract A { }
|
||||||
"#
|
"#
|
||||||
);
|
);
|
||||||
|
@ -547,8 +550,11 @@ contract C { }
|
||||||
r#"
|
r#"
|
||||||
pragma solidity ^0.8.10;
|
pragma solidity ^0.8.10;
|
||||||
pragma experimental ABIEncoderV2;
|
pragma experimental ABIEncoderV2;
|
||||||
|
|
||||||
contract C { }
|
contract C { }
|
||||||
|
|
||||||
contract B { }
|
contract B { }
|
||||||
|
|
||||||
contract A { }
|
contract A { }
|
||||||
"#
|
"#
|
||||||
);
|
);
|
||||||
|
@ -572,6 +578,7 @@ fn can_flatten_file_with_duplicates() {
|
||||||
pragma solidity >=0.6.0;
|
pragma solidity >=0.6.0;
|
||||||
|
|
||||||
contract Bar {}
|
contract Bar {}
|
||||||
|
|
||||||
contract Foo {}
|
contract Foo {}
|
||||||
|
|
||||||
contract FooBar {}
|
contract FooBar {}
|
||||||
|
@ -598,6 +605,7 @@ fn can_flatten_on_solang_failure() {
|
||||||
pragma solidity ^0.8.10;
|
pragma solidity ^0.8.10;
|
||||||
|
|
||||||
library Lib {}
|
library Lib {}
|
||||||
|
|
||||||
// Intentionally erroneous code
|
// Intentionally erroneous code
|
||||||
contract Contract {
|
contract Contract {
|
||||||
failure();
|
failure();
|
||||||
|
@ -650,9 +658,64 @@ contract C { }
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
result.trim(),
|
result.trim(),
|
||||||
r#"pragma solidity ^0.8.10;
|
r#"pragma solidity ^0.8.10;
|
||||||
|
|
||||||
contract C { }
|
contract C { }
|
||||||
|
|
||||||
error IllegalArgument();
|
error IllegalArgument();
|
||||||
error IllegalState();
|
error IllegalState();
|
||||||
|
|
||||||
|
contract A { }"#
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_flatten_remove_extra_spacing() {
|
||||||
|
let project = TempProject::dapptools().unwrap();
|
||||||
|
|
||||||
|
let f = project
|
||||||
|
.add_source(
|
||||||
|
"A",
|
||||||
|
r#"pragma solidity ^0.8.10;
|
||||||
|
import "./C.sol";
|
||||||
|
import "./B.sol";
|
||||||
|
contract A { }
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
project
|
||||||
|
.add_source(
|
||||||
|
"B",
|
||||||
|
r#"// This is a B Contract
|
||||||
|
pragma solidity ^0.8.10;
|
||||||
|
|
||||||
|
import "./C.sol";
|
||||||
|
|
||||||
|
contract B { }
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
project
|
||||||
|
.add_source(
|
||||||
|
"C",
|
||||||
|
r#"pragma solidity ^0.8.10;
|
||||||
|
contract C { }
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let result = project.flatten(&f).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
result.trim(),
|
||||||
|
r#"pragma solidity ^0.8.10;
|
||||||
|
|
||||||
|
contract C { }
|
||||||
|
|
||||||
|
// This is a B Contract
|
||||||
|
|
||||||
|
contract B { }
|
||||||
|
|
||||||
contract A { }"#
|
contract A { }"#
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue