mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 06:14:46 +00:00
Merge branch 'main' into inline-imports
This commit is contained in:
commit
f69bc2e46f
26 changed files with 115 additions and 35 deletions
|
@ -11,7 +11,7 @@ env:
|
||||||
# use .tar.gz for quick testing
|
# use .tar.gz for quick testing
|
||||||
ARCHIVE_FORMAT: .tar.br
|
ARCHIVE_FORMAT: .tar.br
|
||||||
# Make a new basic-cli git tag and set it here before starting this workflow
|
# Make a new basic-cli git tag and set it here before starting this workflow
|
||||||
RELEASE_TAG: 0.9.0
|
RELEASE_TAG: 0.9.1
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
prepare:
|
prepare:
|
||||||
|
@ -158,7 +158,11 @@ jobs:
|
||||||
- name: rename nightly folder
|
- name: rename nightly folder
|
||||||
run: mv roc_nightly* roc_nightly
|
run: mv roc_nightly* roc_nightly
|
||||||
|
|
||||||
- run: git clone https://github.com/roc-lang/basic-cli.git
|
- run: |
|
||||||
|
git clone https://github.com/roc-lang/basic-cli.git
|
||||||
|
cd basic-cli
|
||||||
|
git checkout $RELEASE_TAG
|
||||||
|
cd ..
|
||||||
|
|
||||||
- run: cp macos-apple-silicon-files/* ./basic-cli/platform
|
- run: cp macos-apple-silicon-files/* ./basic-cli/platform
|
||||||
|
|
||||||
|
|
5
.github/workflows/test_nightly_many_os.yml
vendored
5
.github/workflows/test_nightly_many_os.yml
vendored
|
@ -18,12 +18,15 @@ jobs:
|
||||||
with:
|
with:
|
||||||
version: 0.11.0
|
version: 0.11.0
|
||||||
|
|
||||||
|
- name: Install zlib on macOS-13
|
||||||
|
if: matrix.os == 'macos-13'
|
||||||
|
run: brew install zlib
|
||||||
|
|
||||||
- name: get the latest release archive for linux (x86_64)
|
- name: get the latest release archive for linux (x86_64)
|
||||||
if: startsWith(matrix.os, 'ubuntu')
|
if: startsWith(matrix.os, 'ubuntu')
|
||||||
run: |
|
run: |
|
||||||
curl -fOL https://github.com/roc-lang/roc/releases/download/nightly/roc_nightly-linux_x86_64-latest.tar.gz
|
curl -fOL https://github.com/roc-lang/roc/releases/download/nightly/roc_nightly-linux_x86_64-latest.tar.gz
|
||||||
|
|
||||||
|
|
||||||
- name: get the latest release archive for macos (x86_64)
|
- name: get the latest release archive for macos (x86_64)
|
||||||
if: startsWith(matrix.os, 'macos')
|
if: startsWith(matrix.os, 'macos')
|
||||||
run: curl -fOL https://github.com/roc-lang/roc/releases/download/nightly/roc_nightly-macos_x86_64-latest.tar.gz
|
run: curl -fOL https://github.com/roc-lang/roc/releases/download/nightly/roc_nightly-macos_x86_64-latest.tar.gz
|
||||||
|
|
|
@ -949,7 +949,7 @@ mod cli_run {
|
||||||
This roc file can print its own source code. The source is:
|
This roc file can print its own source code. The source is:
|
||||||
|
|
||||||
app "ingested-file"
|
app "ingested-file"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [
|
imports [
|
||||||
pf.Stdout,
|
pf.Stdout,
|
||||||
"ingested-file.roc" as ownCode : Str,
|
"ingested-file.roc" as ownCode : Str,
|
||||||
|
|
|
@ -857,15 +857,21 @@ fn is_matching_empty_record<'a>(
|
||||||
is_empty_record && is_pattern_empty_record
|
is_empty_record && is_pattern_empty_record
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_matching_intermediate_answer<'a>(
|
pub fn is_matching_intermediate_answer<'a>(
|
||||||
loc_pat: &'a Loc<Pattern<'a>>,
|
loc_pat: &'a Loc<Pattern<'a>>,
|
||||||
loc_expr: &'a Loc<Expr<'a>>,
|
loc_new: &'a Loc<Expr<'a>>,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
let pat_ident = match loc_pat.value {
|
let pat_ident = match loc_pat.value {
|
||||||
Pattern::Identifier { ident, .. } => Some(ident),
|
Pattern::Identifier { ident, .. } => Some(ident),
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
let exp_ident = match extract_wrapped_task_ok_value(loc_expr) {
|
let exp_ident = match loc_new.value {
|
||||||
|
Expr::Var {
|
||||||
|
module_name, ident, ..
|
||||||
|
} if module_name.is_empty() && ident.starts_with('#') => Some(ident),
|
||||||
|
_ => None,
|
||||||
|
};
|
||||||
|
let exp_ident_in_task = match extract_wrapped_task_ok_value(loc_new) {
|
||||||
Some(task_expr) => match task_expr.value {
|
Some(task_expr) => match task_expr.value {
|
||||||
Expr::Var {
|
Expr::Var {
|
||||||
module_name, ident, ..
|
module_name, ident, ..
|
||||||
|
@ -874,8 +880,9 @@ fn is_matching_intermediate_answer<'a>(
|
||||||
},
|
},
|
||||||
None => None,
|
None => None,
|
||||||
};
|
};
|
||||||
match (pat_ident, exp_ident) {
|
match (pat_ident, exp_ident, exp_ident_in_task) {
|
||||||
(Some(a), Some(b)) => a == b,
|
(Some(a), Some(b), None) => a == b,
|
||||||
|
(Some(a), None, Some(b)) => a == b,
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -757,4 +757,70 @@ mod suffixed_tests {
|
||||||
r##"Defs { tags: [Index(2147483648)], regions: [@0-195], space_before: [Slice(start = 0, length = 0)], space_after: [Slice(start = 0, length = 0)], spaces: [], type_defs: [], value_defs: [Body(@0-4 Identifier { ident: "list", suffixed: 0 }, @24-195 Apply(@24-195 Var { module_name: "Task", ident: "await", suffixed: 0 }, [@29-37 Var { module_name: "", ident: "getList", suffixed: 0 }, @24-195 Closure([@29-37 Identifier { ident: "#!a0", suffixed: 0 }], @24-195 When(@29-37 Var { module_name: "", ident: "#!a0", suffixed: 0 }, [WhenBranch { patterns: [@61-63 List([])], value: @97-103 Apply(@97-103 Var { module_name: "Task", ident: "await", suffixed: 0 }, [@97-103 Apply(@97-103 Var { module_name: "", ident: "line", suffixed: 0 }, [@98-103 Str(PlainLine("foo"))], Space), @97-103 Closure([@97-103 RecordDestructure([])], @128-139 Apply(@128-139 Var { module_name: "", ident: "line", suffixed: 0 }, [@134-139 Str(PlainLine("bar"))], Space))], BangSuffix), guard: None }, WhenBranch { patterns: [@160-161 Underscore("")], value: @190-195 Apply(@190-192 Var { module_name: "", ident: "ok", suffixed: 0 }, [@193-195 Record([])], Space), guard: None }]))], BangSuffix))] }"##,
|
r##"Defs { tags: [Index(2147483648)], regions: [@0-195], space_before: [Slice(start = 0, length = 0)], space_after: [Slice(start = 0, length = 0)], spaces: [], type_defs: [], value_defs: [Body(@0-4 Identifier { ident: "list", suffixed: 0 }, @24-195 Apply(@24-195 Var { module_name: "Task", ident: "await", suffixed: 0 }, [@29-37 Var { module_name: "", ident: "getList", suffixed: 0 }, @24-195 Closure([@29-37 Identifier { ident: "#!a0", suffixed: 0 }], @24-195 When(@29-37 Var { module_name: "", ident: "#!a0", suffixed: 0 }, [WhenBranch { patterns: [@61-63 List([])], value: @97-103 Apply(@97-103 Var { module_name: "Task", ident: "await", suffixed: 0 }, [@97-103 Apply(@97-103 Var { module_name: "", ident: "line", suffixed: 0 }, [@98-103 Str(PlainLine("foo"))], Space), @97-103 Closure([@97-103 RecordDestructure([])], @128-139 Apply(@128-139 Var { module_name: "", ident: "line", suffixed: 0 }, [@134-139 Str(PlainLine("bar"))], Space))], BangSuffix), guard: None }, WhenBranch { patterns: [@160-161 Underscore("")], value: @190-195 Apply(@190-192 Var { module_name: "", ident: "ok", suffixed: 0 }, [@193-195 Record([])], Space), guard: None }]))], BangSuffix))] }"##,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn trailing_suffix_inside_when() {
|
||||||
|
run_test(
|
||||||
|
r#"
|
||||||
|
main =
|
||||||
|
result = Stdin.line!
|
||||||
|
|
||||||
|
when result is
|
||||||
|
End ->
|
||||||
|
Task.ok {}
|
||||||
|
|
||||||
|
Input name ->
|
||||||
|
Stdout.line! "Hello, $(name)"
|
||||||
|
"#,
|
||||||
|
r#"Defs { tags: [Index(2147483648)], regions: [@0-226], space_before: [Slice(start = 0, length = 0)], space_after: [Slice(start = 0, length = 0)], spaces: [], type_defs: [], value_defs: [Body(@0-4 Identifier { ident: "main", suffixed: 0 }, @32-43 Apply(@32-43 Var { module_name: "Task", ident: "await", suffixed: 0 }, [@32-43 Var { module_name: "Stdin", ident: "line", suffixed: 0 }, @32-43 Closure([@23-29 Identifier { ident: "result", suffixed: 0 }], @61-226 When(@66-72 Var { module_name: "", ident: "result", suffixed: 0 }, [WhenBranch { patterns: [@96-99 Tag("End")], value: @127-137 Apply(@127-134 Var { module_name: "Task", ident: "ok", suffixed: 0 }, [@135-137 Record([])], Space), guard: None }, WhenBranch { patterns: [@159-169 Apply(@159-164 Tag("Input"), [@165-169 Identifier { ident: "name", suffixed: 0 }])], value: @197-226 Apply(@197-226 Var { module_name: "Stdout", ident: "line", suffixed: 0 }, [@210-226 Str(Line([Plaintext("Hello, "), Interpolated(@220-224 Var { module_name: "", ident: "name", suffixed: 0 })]))], Space), guard: None }]))], BangSuffix))] }"#,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test_suffixed_helpers {
|
||||||
|
|
||||||
|
use roc_can::suffixed::is_matching_intermediate_answer;
|
||||||
|
use roc_module::called_via::CalledVia;
|
||||||
|
use roc_module::ident::ModuleName;
|
||||||
|
use roc_parse::ast::Expr;
|
||||||
|
use roc_parse::ast::Pattern;
|
||||||
|
use roc_region::all::Loc;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_matching_answer() {
|
||||||
|
let loc_pat = Loc::at_zero(Pattern::Identifier {
|
||||||
|
ident: "#!a0",
|
||||||
|
suffixed: 0,
|
||||||
|
});
|
||||||
|
let loc_new = Loc::at_zero(Expr::Var {
|
||||||
|
module_name: "",
|
||||||
|
ident: "#!a0",
|
||||||
|
suffixed: 0,
|
||||||
|
});
|
||||||
|
|
||||||
|
std::assert!(is_matching_intermediate_answer(&loc_pat, &loc_new));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_matching_answer_task_ok() {
|
||||||
|
let loc_pat = Loc::at_zero(Pattern::Identifier {
|
||||||
|
ident: "#!a0",
|
||||||
|
suffixed: 0,
|
||||||
|
});
|
||||||
|
let intermetiate = &[&Loc::at_zero(Expr::Var {
|
||||||
|
module_name: "",
|
||||||
|
ident: "#!a0",
|
||||||
|
suffixed: 0,
|
||||||
|
})];
|
||||||
|
let task_ok = Loc::at_zero(Expr::Var {
|
||||||
|
module_name: ModuleName::TASK,
|
||||||
|
ident: "ok",
|
||||||
|
suffixed: 0,
|
||||||
|
});
|
||||||
|
|
||||||
|
let loc_new = Loc::at_zero(Expr::Apply(&task_ok, intermetiate, CalledVia::BangSuffix));
|
||||||
|
|
||||||
|
std::assert!(is_matching_intermediate_answer(&loc_pat, &loc_new));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1816,7 +1816,7 @@ fn roc_file_no_extension() {
|
||||||
indoc!(
|
indoc!(
|
||||||
r#"
|
r#"
|
||||||
app "helloWorld"
|
app "helloWorld"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout]
|
imports [pf.Stdout]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
app "hello"
|
app "hello"
|
||||||
packages {
|
packages {
|
||||||
pf:
|
pf:
|
||||||
"https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br",
|
"https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br",
|
||||||
}
|
}
|
||||||
imports [pf.Stdout]
|
imports [pf.Stdout]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
|
@ -24,7 +24,7 @@ Full {
|
||||||
Newline,
|
Newline,
|
||||||
],
|
],
|
||||||
package_name: @31-145 PackageName(
|
package_name: @31-145 PackageName(
|
||||||
"https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br",
|
"https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br",
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
app "hello"
|
app "hello"
|
||||||
packages { pf:
|
packages { pf:
|
||||||
"https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br"
|
"https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br"
|
||||||
}
|
}
|
||||||
imports [pf.Stdout]
|
imports [pf.Stdout]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
app "args"
|
app "args"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout, pf.Arg, pf.Task.{ Task }]
|
imports [pf.Stdout, pf.Arg, pf.Task.{ Task }]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
app "countdown"
|
app "countdown"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdin, pf.Stdout, pf.Task.{ await, loop }]
|
imports [pf.Stdin, pf.Stdout, pf.Task.{ await, loop }]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
app "echo"
|
app "echo"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdin, pf.Stdout, pf.Task.{ Task }]
|
imports [pf.Stdin, pf.Stdout, pf.Task.{ Task }]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
app "env"
|
app "env"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout, pf.Stderr, pf.Env, pf.Task.{ Task }]
|
imports [pf.Stdout, pf.Stderr, pf.Env, pf.Task.{ Task }]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
app "file-io"
|
app "file-io"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [
|
imports [
|
||||||
pf.Stdout,
|
pf.Stdout,
|
||||||
pf.Stderr,
|
pf.Stderr,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
app "form"
|
app "form"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdin, pf.Stdout, pf.Task.{ await, Task }]
|
imports [pf.Stdin, pf.Stdout, pf.Task.{ await, Task }]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
app "http-get"
|
app "http-get"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Http, pf.Task.{ Task }, pf.Stdin, pf.Stdout]
|
imports [pf.Http, pf.Task.{ Task }, pf.Stdin, pf.Stdout]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
app "ingested-file-bytes"
|
app "ingested-file-bytes"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [
|
imports [
|
||||||
pf.Stdout,
|
pf.Stdout,
|
||||||
"../../LICENSE" as license : _, # A type hole can also be used here.
|
"../../LICENSE" as license : _, # A type hole can also be used here.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
app "ingested-file"
|
app "ingested-file"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [
|
imports [
|
||||||
pf.Stdout,
|
pf.Stdout,
|
||||||
"ingested-file.roc" as ownCode : Str,
|
"ingested-file.roc" as ownCode : Str,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
app "helloWorld"
|
app "helloWorld"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout]
|
imports [pf.Stdout]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# Shows how Roc values can be logged
|
# Shows how Roc values can be logged
|
||||||
#
|
#
|
||||||
app "inspect-logging"
|
app "inspect-logging"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [
|
imports [
|
||||||
pf.Stdout,
|
pf.Stdout,
|
||||||
Community,
|
Community,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
app "example"
|
app "example"
|
||||||
packages {
|
packages {
|
||||||
cli: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br",
|
cli: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br",
|
||||||
parser: "https://github.com/lukewilliamboswell/roc-parser/releases/download/0.5.2/9VrPjwfQQ1QeSL3CfmWr2Pr9DESdDIXy97pwpuq84Ck.tar.br",
|
parser: "https://github.com/lukewilliamboswell/roc-parser/releases/download/0.5.2/9VrPjwfQQ1QeSL3CfmWr2Pr9DESdDIXy97pwpuq84Ck.tar.br",
|
||||||
}
|
}
|
||||||
imports [
|
imports [
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
app "example"
|
app "example"
|
||||||
packages {
|
packages {
|
||||||
pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br",
|
pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br",
|
||||||
parser: "https://github.com/lukewilliamboswell/roc-parser/releases/download/0.5.2/9VrPjwfQQ1QeSL3CfmWr2Pr9DESdDIXy97pwpuq84Ck.tar.br",
|
parser: "https://github.com/lukewilliamboswell/roc-parser/releases/download/0.5.2/9VrPjwfQQ1QeSL3CfmWr2Pr9DESdDIXy97pwpuq84Ck.tar.br",
|
||||||
}
|
}
|
||||||
imports [
|
imports [
|
||||||
|
|
|
@ -3,7 +3,7 @@ let
|
||||||
inherit (compile-deps) zigPkg llvmPkgs llvmVersion llvmMajorMinorStr glibcPath libGccSPath;
|
inherit (compile-deps) zigPkg llvmPkgs llvmVersion llvmMajorMinorStr glibcPath libGccSPath;
|
||||||
|
|
||||||
subPackagePath = if subPackage != null then "crates/${subPackage}" else null;
|
subPackagePath = if subPackage != null then "crates/${subPackage}" else null;
|
||||||
mainBin = if subPackage == "lang_srv" then "roc_language_server" else "roc";
|
mainBin = if subPackage == "language_server" then "roc_language_server" else "roc";
|
||||||
filteredSource = pkgs.callPackage ./fileFilter.nix { };
|
filteredSource = pkgs.callPackage ./fileFilter.nix { };
|
||||||
in
|
in
|
||||||
rustPlatform.buildRustPackage {
|
rustPlatform.buildRustPackage {
|
||||||
|
|
|
@ -18,7 +18,7 @@ let
|
||||||
|
|
||||||
# all rust crates in workspace.members of Cargo.toml
|
# all rust crates in workspace.members of Cargo.toml
|
||||||
roc-full = callPackage ./builder.nix { };
|
roc-full = callPackage ./builder.nix { };
|
||||||
roc-lang-server = callPackage ./builder.nix { subPackage = "lang_srv"; };
|
roc-lang-server = callPackage ./builder.nix { subPackage = "language_server"; };
|
||||||
# only the CLI crate = executable provided in nightly releases
|
# only the CLI crate = executable provided in nightly releases
|
||||||
roc-cli = callPackage ./builder.nix { subPackage = "cli"; };
|
roc-cli = callPackage ./builder.nix { subPackage = "cli"; };
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,7 +8,7 @@ Here is a Roc application that prints `"Hello, World!"` to the command line:
|
||||||
|
|
||||||
```roc
|
```roc
|
||||||
app "hello"
|
app "hello"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout]
|
imports [pf.Stdout]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,7 @@ Make a file named `main.roc` and put this in it:
|
||||||
|
|
||||||
```roc
|
```roc
|
||||||
app "hello"
|
app "hello"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout]
|
imports [pf.Stdout]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
@ -1436,7 +1436,7 @@ Let's take a closer look at the part of `main.roc` above the `main` def:
|
||||||
|
|
||||||
```roc
|
```roc
|
||||||
app "hello"
|
app "hello"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout]
|
imports [pf.Stdout]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
```
|
```
|
||||||
|
@ -1448,7 +1448,7 @@ The line `app "hello"` shows that this module is a Roc application. The "hello"
|
||||||
The remaining lines all involve the [platform](https://github.com/roc-lang/roc/wiki/Roc-concepts-explained#platform) this application is built on:
|
The remaining lines all involve the [platform](https://github.com/roc-lang/roc/wiki/Roc-concepts-explained#platform) this application is built on:
|
||||||
|
|
||||||
```roc
|
```roc
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout]
|
imports [pf.Stdout]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
```
|
```
|
||||||
|
@ -1547,7 +1547,7 @@ Let's start with a basic "Hello World" program.
|
||||||
|
|
||||||
```roc
|
```roc
|
||||||
app "cli-tutorial"
|
app "cli-tutorial"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout]
|
imports [pf.Stdout]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
@ -1581,7 +1581,7 @@ Let's change `main` to read a line from `stdin`, and then print what we got:
|
||||||
|
|
||||||
```roc
|
```roc
|
||||||
app "cli-tutorial"
|
app "cli-tutorial"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout, pf.Stdin, pf.Task]
|
imports [pf.Stdout, pf.Stdin, pf.Task]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
@ -1626,7 +1626,7 @@ This works, but we can make it a little nicer to read. Let's change it to the fo
|
||||||
|
|
||||||
```roc
|
```roc
|
||||||
app "cli-tutorial"
|
app "cli-tutorial"
|
||||||
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.0/oKWkaruh2zXxin_xfsYsCJobH1tO8_JvNkFzDwwzNUQ.tar.br" }
|
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.9.1/y_Ww7a2_ZGjp0ZTt9Y_pNdSqqMRdMLzHMKfdN8LWidk.tar.br" }
|
||||||
imports [pf.Stdout, pf.Stdin, pf.Task.{ await }]
|
imports [pf.Stdout, pf.Stdin, pf.Task.{ await }]
|
||||||
provides [main] to pf
|
provides [main] to pf
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue