Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
6ab1490
Add canonical syntax migration tools: core migration and extension tools
Y-Nak Aug 13, 2026
4043de6
Add canonical syntax migration tools: type and expression migration
Y-Nak Aug 13, 2026
7068ade
Add canonical syntax migration tools: embedded source migration
Y-Nak Aug 13, 2026
f023e38
Add canonical syntax migration tools: embedded literal migration
Y-Nak Aug 13, 2026
54b36b3
Switch the compiler and fixtures to canonical syntax: fuzz extensions
Y-Nak Aug 13, 2026
2e9a69c
Switch the compiler and fixtures to canonical syntax: hir ty fixtures…
Y-Nak Aug 13, 2026
e378cc6
Switch the compiler and fixtures to canonical syntax: nameres fixture…
Y-Nak Aug 13, 2026
8b70a57
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
6367072
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
e7b341a
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
651a96f
Switch the compiler and fixtures to canonical syntax: parser corpus k…
Y-Nak Aug 13, 2026
ee14960
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
aa8b812
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
d5f4521
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
8111207
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
15346b5
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
2c348d8
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
90f1ac9
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
1078b87
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
c98b908
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
6fff393
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
a9fc096
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
da98bf5
Switch the compiler and fixtures to canonical syntax: parser fixtures…
Y-Nak Aug 13, 2026
6c3b893
Switch the compiler and fixtures to canonical syntax: specialize fixt…
Y-Nak Aug 13, 2026
30221a9
Switch the compiler and fixtures to canonical syntax: standard librar…
Y-Nak Aug 13, 2026
d6c4cf2
Switch the compiler and fixtures to canonical syntax: tests extensions
Y-Nak Aug 13, 2026
bd72496
Switch the compiler and fixtures to canonical syntax: uitest fixtures…
Y-Nak Aug 13, 2026
a31755c
Switch the compiler and fixtures to canonical syntax: uitest fixtures…
Y-Nak Aug 13, 2026
4d947a3
Switch the compiler and fixtures to canonical syntax: yul fixtures ex…
Y-Nak Aug 13, 2026
0792431
Switch the compiler and fixtures to canonical syntax: compiler
Y-Nak Aug 13, 2026
0c0d756
Switch the compiler and fixtures to canonical syntax: driver
Y-Nak Aug 13, 2026
7d04a2c
Switch the compiler and fixtures to canonical syntax: fuzz
Y-Nak Aug 13, 2026
88c4d4c
Switch the compiler and fixtures to canonical syntax: hir
Y-Nak Aug 13, 2026
ff27660
Switch the compiler and fixtures to canonical syntax: hir ty
Y-Nak Aug 13, 2026
25b5ee1
Switch the compiler and fixtures to canonical syntax: hir ty
Y-Nak Aug 13, 2026
d562c44
Switch the compiler and fixtures to canonical syntax: hir ty
Y-Nak Aug 13, 2026
98df56f
Switch the compiler and fixtures to canonical syntax: hir ty fixtures
Y-Nak Aug 13, 2026
5773e60
Switch the compiler and fixtures to canonical syntax: hir ty fixtures
Y-Nak Aug 13, 2026
709c865
Switch the compiler and fixtures to canonical syntax: hull
Y-Nak Aug 13, 2026
8c9c5ae
Switch the compiler and fixtures to canonical syntax: lsp
Y-Nak Aug 13, 2026
509fe68
Switch the compiler and fixtures to canonical syntax: lsp
Y-Nak Aug 13, 2026
8925d06
Switch the compiler and fixtures to canonical syntax: nameres
Y-Nak Aug 13, 2026
4faaf94
Switch the compiler and fixtures to canonical syntax: nameres fixtures
Y-Nak Aug 13, 2026
eb777e5
Switch the compiler and fixtures to canonical syntax: parser
Y-Nak Aug 13, 2026
b751b6f
Switch the compiler and fixtures to canonical syntax: parser
Y-Nak Aug 13, 2026
684d4ee
Switch the compiler and fixtures to canonical syntax: parser
Y-Nak Aug 13, 2026
38989bf
Switch the compiler and fixtures to canonical syntax: parser corpus R…
Y-Nak Aug 13, 2026
f5229b0
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
83c2ebe
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
e520109
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
922a20f
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
ae1de6e
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
0db2f28
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
fe1a911
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
2288abc
Switch the compiler and fixtures to canonical syntax: parser corpus f…
Y-Nak Aug 13, 2026
9297ccd
Switch the compiler and fixtures to canonical syntax: parser corpus k…
Y-Nak Aug 13, 2026
4c6e500
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
25c5969
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
8adde94
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
9db60d6
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
2e89d30
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
818ba87
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
450b510
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
f1eec27
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
d44d142
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
ab3fd1d
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
44f9f3c
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
871e27c
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
18a9c19
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
3918bc2
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
206927c
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
2908962
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
df4af5d
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
91532ec
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
61b7418
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
5a8d58e
Switch the compiler and fixtures to canonical syntax: parser corpus o…
Y-Nak Aug 13, 2026
34250e3
Switch the compiler and fixtures to canonical syntax: parser corpus r…
Y-Nak Aug 13, 2026
07ee452
Switch the compiler and fixtures to canonical syntax: parser corpus r…
Y-Nak Aug 13, 2026
ea8a2ac
Switch the compiler and fixtures to canonical syntax: parser corpus r…
Y-Nak Aug 13, 2026
d5f06d7
Switch the compiler and fixtures to canonical syntax: parser corpus r…
Y-Nak Aug 13, 2026
83bc61f
Switch the compiler and fixtures to canonical syntax: parser fixtures
Y-Nak Aug 13, 2026
16a56d1
Switch the compiler and fixtures to canonical syntax: sonatina
Y-Nak Aug 13, 2026
0760752
Switch the compiler and fixtures to canonical syntax: specialize
Y-Nak Aug 13, 2026
e5a3856
Switch the compiler and fixtures to canonical syntax: specialize
Y-Nak Aug 13, 2026
2e12e2d
Switch the compiler and fixtures to canonical syntax: specialize fixt…
Y-Nak Aug 13, 2026
b3509e5
Switch the compiler and fixtures to canonical syntax: standard library
Y-Nak Aug 13, 2026
e41d80f
Switch the compiler and fixtures to canonical syntax: standard library
Y-Nak Aug 13, 2026
b944bd7
Switch the compiler and fixtures to canonical syntax: standard library
Y-Nak Aug 13, 2026
ff4362d
Switch the compiler and fixtures to canonical syntax: standard library
Y-Nak Aug 13, 2026
29db6f3
Switch the compiler and fixtures to canonical syntax: test utils
Y-Nak Aug 13, 2026
5113d5f
Switch the compiler and fixtures to canonical syntax: tests
Y-Nak Aug 13, 2026
508cef4
Switch the compiler and fixtures to canonical syntax: tests
Y-Nak Aug 13, 2026
3443aea
Switch the compiler and fixtures to canonical syntax: tests
Y-Nak Aug 13, 2026
1a4747b
Switch the compiler and fixtures to canonical syntax: tests
Y-Nak Aug 13, 2026
5d62c99
Switch the compiler and fixtures to canonical syntax: uitest
Y-Nak Aug 13, 2026
7f3b15c
Switch the compiler and fixtures to canonical syntax: uitest fixtures
Y-Nak Aug 13, 2026
41dccc2
Switch the compiler and fixtures to canonical syntax: uitest fixtures
Y-Nak Aug 13, 2026
4abd53e
Switch the compiler and fixtures to canonical syntax: uitest fixtures
Y-Nak Aug 13, 2026
e12fcd0
Switch the compiler and fixtures to canonical syntax: uitest fixtures
Y-Nak Aug 13, 2026
3d0f296
Switch the compiler and fixtures to canonical syntax: uitest fixtures
Y-Nak Aug 13, 2026
f874b33
Switch the compiler and fixtures to canonical syntax: uitest fixtures
Y-Nak Aug 13, 2026
eefe525
Switch the compiler and fixtures to canonical syntax: vfs
Y-Nak Aug 13, 2026
20f1c0a
Switch the compiler and fixtures to canonical syntax: wasm
Y-Nak Aug 13, 2026
e1cedb9
Switch the compiler and fixtures to canonical syntax: yul
Y-Nak Aug 13, 2026
bb020c1
Switch the compiler and fixtures to canonical syntax: yul fixtures
Y-Nak Aug 13, 2026
78cc952
Update language tooling for canonical Core sources
Y-Nak Aug 13, 2026
82ec68c
Document the canonical syntax cutover
Y-Nak Aug 13, 2026
1376f62
Make clippy happy
Y-Nak Aug 13, 2026
7ede327
Add more examples in playground
Y-Nak Aug 13, 2026
01ac278
Add comptime example in playground
Y-Nak Aug 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
23 changes: 15 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,28 @@

Try it in the [online playground](https://solcore-rs-preview.solcore-rs-team.workers.dev/).

## Compatibility target
## Language and compatibility targets

The current compatibility target is the Haskell reference implementation at
The canonical source-language target is [`syntax.md`](syntax.md). It
intentionally replaces legacy Haskell Solcore spellings with the new Core
surface, so source-syntax compatibility with the Haskell implementation is not
a language goal. The compiler, standard library, examples, and fixtures use the
new `.sol` surface.

For semantics already supported by Core, the comparison baseline remains the
Haskell reference implementation at
[`argotorg/solcore@2f372bde`](https://github.com/argotorg/solcore/tree/2f372bde2801612814015a22319d0bc51486cbf0).
The standard library and the complete 499-source reference frontend corpus are
vendored from that exact revision. See
The standard library and the complete 499-source frontend corpus are semantic
ports of that exact revision to the canonical syntax. See
[`SEMANTIC_DIFFERENCES.md`](SEMANTIC_DIFFERENCES.md) for intentional Rust
extensions, shared upstream limitations, and phase-sensitive differences, and
the [corpus README](crates/parser/tests/fixtures/corpus/README.md) for the
reproducible reference verdict configuration.

Compatibility does not imply production readiness or byte-for-byte compiler
output. Rust deliberately keeps structured diagnostics and several safety
checks that are stricter than the reference target, while shared upstream
limitations remain explicitly unsupported.
Semantic compatibility does not imply source-syntax compatibility, production
readiness, or byte-for-byte compiler output. Rust deliberately keeps structured
diagnostics and several safety checks that are stricter than the reference
target, while shared upstream limitations remain explicitly unsupported.

## Build and test

Expand Down
92 changes: 51 additions & 41 deletions SEMANTIC_DIFFERENCES.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion benchmarks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ The fixed cases cover distinct compiler workloads:

| Case | Fixture | Purpose |
| --- | --- | --- |
| `std-free` | `SingleFun.solc` | Small frontend run without reachable std/runtime |
| `std-free` | `SingleFun.sol` | Small frontend run without reachable std/runtime |
| `dispatch-small` | `tests/e2e/022add` | Small contract with compiler-owned dispatch |
| `erc20-large` | `tests/e2e/128minierc20` | Larger std- and storage-heavy contract |
| `multi-file` | `tests/e2e/ltimp` | Main module plus a local import |
Expand Down
14 changes: 7 additions & 7 deletions benchmarks/tofu/materialize.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,18 @@
REPOSITORY = HERE.parents[1]
CASES = {
"std-free": {
"main.solc": REPOSITORY
/ "crates/parser/tests/fixtures/corpus/ok/test/examples/cases/SingleFun.solc",
"main.sol": REPOSITORY
/ "crates/parser/tests/fixtures/corpus/ok/test/examples/cases/SingleFun.sol",
},
"dispatch-small": {
"main.solc": REPOSITORY / "tests/e2e/022add/main.solc",
"main.sol": REPOSITORY / "tests/e2e/022add/main.sol",
},
"erc20-large": {
"main.solc": REPOSITORY / "tests/e2e/128minierc20/main.solc",
"main.sol": REPOSITORY / "tests/e2e/128minierc20/main.sol",
},
"multi-file": {
"main.solc": REPOSITORY / "tests/e2e/ltimp/main.solc",
"ltproxy.solc": REPOSITORY / "tests/e2e/ltimp/ltproxy.solc",
"main.sol": REPOSITORY / "tests/e2e/ltimp/main.sol",
"ltproxy.sol": REPOSITORY / "tests/e2e/ltimp/ltproxy.sol",
},
}

Expand All @@ -36,7 +36,7 @@ def standard_json(sources):
},
"settings": {
"solcore": {
"entrypoint": "main.solc",
"entrypoint": "main.sol",
"stage": "hull",
},
"outputSelection": {"*": {"*": []}},
Expand Down
16 changes: 8 additions & 8 deletions crates/compiler/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@ mod tests {
#[test]
fn frontend_diagnostics_are_lowered() {
let mut db = TestDb::default();
let key = load_main_source(&mut db, "function main() -> word { return true; }\n");
let key = load_main_source(&mut db, "function main() returns (word) { return true; }\n");
let entry = module_id_from_key(&db, &key);

let diagnostics = collect_frontend_diagnostics(&db, entry);
Expand All @@ -432,7 +432,7 @@ mod tests {
let mut db = TestDb::default();
let key = load_main_source(
&mut db,
"contract Main { public function answer() -> word { return 42; } }\n",
"contract Main { function answer() public returns (word) { return 42; } }\n",
);
let entry = module_id_from_key(&db, &key);

Expand All @@ -449,7 +449,7 @@ mod tests {
#[test]
fn clean_source_builds_checked_hull() {
let mut db = TestDb::default();
let key = load_main_source(&mut db, "function main() -> word { return 42; }\n");
let key = load_main_source(&mut db, "function main() returns (word) { return 42; }\n");
let entry = module_id_from_key(&db, &key);
let file = db.module_file(entry).expect("entry source");

Expand All @@ -465,17 +465,17 @@ mod tests {
let mut db = TestDb::default();
let entry_key = load_main_source(
&mut db,
"import a; import b;\nfunction main() -> word { return 0; }\n",
"import a; import b;\nfunction main() returns (word) { return 0; }\n",
);
insert_main_module(
&mut db,
"a",
"contract Token { public function main() -> word { return 1; } }\n",
"contract Token { function main() public returns (word) { return 1; } }\n",
);
insert_main_module(
&mut db,
"b",
"contract Token { public function main() -> word { return 2; } }\n",
"contract Token { function main() public returns (word) { return 2; } }\n",
);
set_main_module_paths(&mut db, &["main", "a", "b"]);
let entry = module_id_from_key(&db, &entry_key);
Expand Down Expand Up @@ -512,7 +512,7 @@ mod tests {
library: LibraryId::Main,
logical_path: vec![name.to_owned()],
};
let url = Url::parse(&format!("memory:///main/{name}.solc")).expect("module URL");
let url = Url::parse(&format!("memory:///main/{name}.sol")).expect("module URL");
let file = SourceFile::new(db, url, Some(source.to_owned()));
db.insert_module_file(key, file);
}
Expand All @@ -521,7 +521,7 @@ mod tests {
let root = PathBuf::from("/main");
let existing_files = stems
.iter()
.map(|stem| root.join(format!("{stem}.solc")))
.map(|stem| root.join(format!("{stem}.sol")))
.collect::<BTreeSet<_>>();
let sibling_stems =
BTreeMap::from([(root, stems.iter().map(|stem| (*stem).to_owned()).collect())]);
Expand Down
10 changes: 8 additions & 2 deletions crates/driver/src/args.rs
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,12 @@ pub(crate) fn parse_args(args: Vec<OsString>) -> Result<ParsedArgs, String> {
let Some(input) = input else {
return Err("missing input file".to_owned());
};
if input.extension() != Some(OsStr::new("sol")) {
return Err(format!(
"input source file `{}` must use the `.sol` extension",
input.display()
));
}
if emit_yul_object.is_some() && emit_yul.is_none() {
return Err("--emit-yul-object requires --emit-yul".to_owned());
}
Expand Down Expand Up @@ -600,15 +606,15 @@ pub(crate) fn default_diagnostic_width() -> usize {
}

pub(crate) fn usage_text(program: &str) -> String {
format!("usage: {program} [OPTIONS] <input.solc>\ntry `{program} --help` for more information")
format!("usage: {program} [OPTIONS] <input.sol>\ntry `{program} --help` for more information")
}

pub(crate) fn help_text(program: &str) -> String {
format!(
"\
Solcore Rust driver

Usage: {program} [OPTIONS] [<input.solc>]
Usage: {program} [OPTIONS] [<input.sol>]

Options:
-f, --file FILE Input source file (alternative to positional input)
Expand Down
6 changes: 3 additions & 3 deletions crates/driver/src/paths.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ fn collect_module_fs_snapshot(
};
for entry in entries.flatten() {
let path = entry.path();
if path.extension().and_then(|extension| extension.to_str()) == Some("solc") {
if path.extension().and_then(|extension| extension.to_str()) == Some("sol") {
if path.is_file() {
existing_files.insert(path.clone());
}
Expand Down Expand Up @@ -180,8 +180,8 @@ mod tests {

#[test]
fn lexical_normalization_removes_dot_and_parent_components() {
let normalized = normalize_lexically(Path::new("alpha/./beta/../gamma/main.solc"));
assert_eq!(normalized, PathBuf::from("alpha/gamma/main.solc"));
let normalized = normalize_lexically(Path::new("alpha/./beta/../gamma/main.sol"));
assert_eq!(normalized, PathBuf::from("alpha/gamma/main.sol"));
}

#[test]
Expand Down
12 changes: 6 additions & 6 deletions crates/driver/src/standard_json.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use std::{
use serde_json::{Map, Value, json};
use vfs::{Diagnostic, DiagnosticSeverity, Workspace, WorkspaceFileChange};

const DEFAULT_ENTRYPOINT: &str = "main.solc";
const DEFAULT_ENTRYPOINT: &str = "main.sol";

#[derive(Clone, Copy, Debug, PartialEq, Eq)]
enum Stage {
Expand Down Expand Up @@ -154,10 +154,10 @@ fn validate_source_name(name: &str) -> Result<(), String> {
|| name.contains('\\')
|| name.contains(':')
|| !has_only_normal_components
|| path.extension().and_then(|extension| extension.to_str()) != Some("solc")
|| path.extension().and_then(|extension| extension.to_str()) != Some("sol")
{
return Err(format!(
"source name `{name}` must be a relative, traversal-free `.solc` path"
"source name `{name}` must be a relative, traversal-free `.sol` path"
));
}
Ok(())
Expand Down Expand Up @@ -295,7 +295,7 @@ mod tests {

#[test]
fn rejects_source_paths_that_escape_the_virtual_workspace() {
for source_name in ["../main.solc", "/main.solc", "dir\\main.solc", "main.sol"] {
for source_name in ["../main.sol", "/main.sol", "dir\\main.sol", "main.solc"] {
assert!(validate_source_name(source_name).is_err(), "{source_name}");
}
}
Expand All @@ -304,11 +304,11 @@ mod tests {
fn defaults_to_main_entrypoint_and_hull_stage() {
let request = parse_request(json!({
"language": "Solcore",
"sources": {"main.solc": {"content": "function main() -> word { return 0; }"}},
"sources": {"main.sol": {"content": "function main() returns (word) { return 0; }"}},
}))
.expect("valid request");

assert_eq!(request.entrypoint, "main.solc");
assert_eq!(request.entrypoint, "main.sol");
assert_eq!(request.stage, Stage::Hull);
}
}
12 changes: 6 additions & 6 deletions crates/driver/tests/standard_json_cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ fn standard_json_compiles_checked_hull_without_polluting_stdout() {
let output = run_standard_json(json!({
"language": "Solcore",
"sources": {
"main.solc": {"content": "function id(x: word) -> word { return x; }\n"}
"main.sol": {"content": "function id(x: word) returns (word) { return x; }\n"}
},
"settings": {"solcore": {"entrypoint": "main.solc", "stage": "hull"}},
"settings": {"solcore": {"entrypoint": "main.sol", "stage": "hull"}},
}));
let response = response(&output);

Expand All @@ -68,10 +68,10 @@ fn standard_json_loads_multiple_virtual_source_files() {
let output = run_standard_json(json!({
"language": "Solcore",
"sources": {
"main.solc": {"content": "import helper.{id};\nfunction main() -> word { return id(0); }\n"},
"helper.solc": {"content": "export { id };\nfunction id(x: word) -> word { return x; }\n"},
"main.sol": {"content": "import {id} from helper;\nfunction main() returns (word) { return id(0); }\n"},
"helper.sol": {"content": "export { id };\nfunction id(x: word) returns (word) { return x; }\n"},
},
"settings": {"solcore": {"entrypoint": "main.solc", "stage": "frontend"}},
"settings": {"solcore": {"entrypoint": "main.sol", "stage": "frontend"}},
}));
let response = response(&output);

Expand All @@ -82,7 +82,7 @@ fn standard_json_loads_multiple_virtual_source_files() {
fn standard_json_reports_request_errors_in_json() {
let output = run_standard_json(json!({
"language": "Solcore",
"sources": {"../escape.solc": {"content": "function main() -> word { return 0; }"}},
"sources": {"../escape.sol": {"content": "function main() returns (word) { return 0; }"}},
}));
let response = response(&output);

Expand Down
Loading