Skip to content

Commit

Permalink
Merge branch 'main' into simplify-refcount
Browse files Browse the repository at this point in the history
Signed-off-by: Brendan Hansknecht <[email protected]>
  • Loading branch information
bhansconnect authored Jan 11, 2025
2 parents d9d2ce8 + 1bb9f7f commit 7643f89
Show file tree
Hide file tree
Showing 131 changed files with 2,398 additions and 2,082 deletions.
13 changes: 8 additions & 5 deletions .github/workflows/www.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
name: deploy www.roc-lang.org

# Whenever a commit lands on `main`, deploy the site
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Whenever a commit lands on `main`, deploy the site
push:
branches:
- deploy-www

jobs:
deploy:
name: 'Deploy to Netlify'
name: "Deploy to Netlify"
runs-on: [self-hosted, linux]
steps:
- uses: jsmrcaga/[email protected]
with:
install_command: 'pwd; cd ../../www'
build_command: 'bash build.sh'
build_directory: 'build'
install_command: "pwd; cd ../../www"
build_command: "bash build.sh"
build_directory: "build"
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
NETLIFY_DEPLOY_MESSAGE: "Deploy git ref ${{ github.ref }}"
Expand Down
4 changes: 2 additions & 2 deletions crates/cli/src/format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -278,14 +278,14 @@ import pf.Stdin
main =
Stdout.line! "What's your name?"
name = Stdin.line!
Stdout.line! "Hi $(name)!""#;
Stdout.line! "Hi ${name}!""#;

const UNFORMATTED_ROC: &str = r#"app [main] { pf: platform "platform/main.roc" }
main =
Stdout.line! "What's your name?"
name = Stdin.line!
Stdout.line! "Hi $(name)!"
Stdout.line! "Hi ${name}!"
"#;

fn setup_test_file(dir: &Path, file_name: &str, contents: &str) -> PathBuf {
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/tests/benchmarks/Quicksort.roc
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ show = \list ->
|> List.map(Num.to_str)
|> Str.join_with(", ")
"[$(content)]"
"[${content}]"
sort_by : List a, (a -> Num *) -> List a
sort_by = \list, to_comparable ->
Expand Down
4 changes: 2 additions & 2 deletions crates/cli/tests/benchmarks/rBTreeInsert.roc
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ show_rb_tree = \tree, show_key, show_value ->
s_l = node_in_parens(left, show_key, show_value)
s_r = node_in_parens(right, show_key, show_value)

"Node $(s_color) $(s_key) $(s_value) $(s_l) $(s_r)"
"Node ${s_color} ${s_key} ${s_value} ${s_l} ${s_r}"

node_in_parens : RedBlackTree k v, (k -> Str), (v -> Str) -> Str
node_in_parens = \tree, show_key, show_value ->
Expand All @@ -36,7 +36,7 @@ node_in_parens = \tree, show_key, show_value ->
Node(_, _, _, _, _) ->
inner = show_rb_tree(tree, show_key, show_value)

"($(inner))"
"(${inner})"

show_color : NodeColor -> Str
show_color = \color ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ snapshot_kind: text

The get_user function expects 1 argument, but it got 2 instead:

12│ $(Api.get_user(1, 2))
12│ ${Api.get_user(1, 2)}
^^^^^^^^^^^^

Are there any missing commas? Or missing parentheses?
Expand All @@ -18,7 +18,7 @@ Are there any missing commas? Or missing parentheses?

This value is not a function, but it was given 1 argument:

13│ $(Api.base_url(1))
13│ ${Api.base_url(1)}
^^^^^^^^^^^^

Are there any missing commas? Or missing parentheses?
Expand All @@ -28,7 +28,7 @@ Are there any missing commas? Or missing parentheses?

The get_post_comment function expects 2 arguments, but it got only 1:

16│ $(Api.get_post_comment(1))
16│ ${Api.get_post_comment(1)}
^^^^^^^^^^^^^^^^^^^^

Roc does not allow functions to be partially applied. Use a closure to
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ fn_annotated_as_value definition:

3fn_annotated_as_value : Str
4> fn_annotated_as_value = \post_id, comment_id ->
5> "/posts/$(post_id)/comments/$(Num.to_str(comment_id))"
5> "/posts/${post_id}/comments/${Num.to_str(comment_id)}"

The body is an anonymous function of type:

Expand All @@ -28,7 +28,7 @@ Something is off with the body of the missing_arg definition:

7│ missing_arg : Str -> Str
8│> missing_arg = \post_id, _ ->
9│> "/posts/$(post_id)/comments"
9│> "/posts/${post_id}/comments"
The body is an anonymous function of type:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ snapshot_kind: text

This argument to this string interpolation has an unexpected type:

10"$(Api.get_post)"
10"${Api.get_post}"
^^^^^^^^^^^^

The argument is an anonymous function of type:
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/tests/test-projects/effectful/combine-tasks.roc
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ main =
_: Task.ok(Dict.single("a", "b")),
}!

Stdout.line!("For multiple tasks: $(Inspect.to_str(multiple_in))")
Stdout.line!("For multiple tasks: ${Inspect.to_str(multiple_in)}")

sequential : Task a err, Task b err, (a, b -> c) -> Task c err
sequential = \first_task, second_task, mapper ->
Expand Down
4 changes: 2 additions & 2 deletions crates/cli/tests/test-projects/effectful/for_each_try.roc
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ main! = \{} ->
validate! : U32 => Result {} U32
validate! = \x ->
if Num.is_even(x) then
Effect.put_line!("✅ $(Num.to_str(x))")
Effect.put_line!("✅ ${Num.to_str(x)}")
Ok({})
else
Effect.put_line!("$(Num.to_str(x)) is not even! ABORT!")
Effect.put_line!("${Num.to_str(x)} is not even! ABORT!")
Err(x)
4 changes: 2 additions & 2 deletions crates/cli/tests/test-projects/effectful/form.roc
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ main! = \{} ->
first = ask!("What's your first name?")
last = ask!("What's your last name?")

Effect.put_line!("\nHi, $(first) $(last)!\n")
Effect.put_line!("\nHi, ${first} ${last}!\n")
when Str.to_u8(ask!("How old are you?")) is
Err(InvalidNumStr) ->
Expand All @@ -17,7 +17,7 @@ main! = \{} ->
Effect.put_line!("\nNice! You can vote!")
Ok(age) ->
Effect.put_line!("\nYou'll be able to vote in $(Num.to_str((18 - age))) years")
Effect.put_line!("\nYou'll be able to vote in ${Num.to_str(18 - age)} years")
Effect.put_line!("\nBye! 👋")
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/tests/test-projects/effectful/print-line.roc
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ main! = \{} ->
else
{}
Effect.put_line!("You entered: $(line)")
Effect.put_line!("You entered: ${line}")
Effect.put_line!("It is known")
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ main! = \{} ->
get_line!: Effect.get_line!,
}

Effect.put_line!("not_effectful: $(not_effectful.get_line!({}))")
Effect.put_line!("effectful: $(effectful.get_line!({}))")
Effect.put_line!("not_effectful: ${not_effectful.get_line!({})}")
Effect.put_line!("effectful: ${effectful.get_line!({})}")
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ main! = \{} ->
logged!("hello", \{} -> Effect.put_line!("Hello, World!"))
logged! = \name, fx! ->
Effect.put_line!("Before $(name)")
Effect.put_line!("Before ${name}")
fx!({})
Effect.put_line!("After $(name)")
Effect.put_line!("After ${name}")
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ to_str = \{ scopes, stack, state, vars } ->
stack_str = Str.join_with(List.map(stack, to_str_data), " ")
vars_str = Str.join_with(List.map(vars, to_str_data), " ")

"\n============\nDepth: $(depth)\nState: $(state_str)\nStack: [$(stack_str)]\nVars: [$(vars_str)]\n============\n"
"\n============\nDepth: ${depth}\nState: ${state_str}\nStack: [${stack_str}]\nVars: [${vars_str}]\n============\n"

with! : Str, (Context => a) => a
with! = \path, callback! ->
Expand Down
4 changes: 2 additions & 2 deletions crates/cli/tests/test-projects/false-interpreter/main.roc
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ main! = \filename ->
{}

Err(StringErr(e)) ->
Stdout.line!("Ran into problem:\n$(e)\n")
Stdout.line!("Ran into problem:\n${e}\n")
interpret_file! : Str => Result {} [StringErr Str]
interpret_file! = \filename ->
Expand All @@ -44,7 +44,7 @@ interpret_file! = \filename ->
Err(StringErr("Ran into an invalid boolean that was neither false (0) or true (-1)"))
Err(InvalidChar(char)) ->
Err(StringErr("Ran into an invalid character with ascii code: $(char)"))
Err(StringErr("Ran into an invalid character with ascii code: ${char}"))
Err(MaxInputNumber) ->
Err(StringErr("Like the original false compiler, the max input number is 320,000"))
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/tests/test-projects/fixtures/packages/main.roc
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ app [main] {
import json.JsonParser
import csv.Csv

main = "Hello, World! $(JsonParser.example) $(Csv.example)"
main = "Hello, World! ${JsonParser.example} ${Csv.example}"
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ app [main] {
import one.One
import two.Two

main = "$(One.example) | $(Two.example)"
main = "${One.example} | ${Two.example}"
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ module [example]

import two.Two

example = "[One imports Two: $(Two.example)]"
example = "[One imports Two: ${Two.example}]"
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ module [example]

import one.One

example = "[Zero imports One: $(One.example)]"
example = "[Zero imports One: ${One.example}]"
14 changes: 7 additions & 7 deletions crates/cli/tests/test-projects/module_params/Api.roc
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,18 @@ module { app_id, protocol } -> [
## value def referencing params
base_url : Str
base_url =
protocol("api.example.com/$(app_id)")
protocol("api.example.com/${app_id}")

## function def referencing params
get_user : U32 -> Str
get_user = \user_id ->
# purposefully not using baseUrl to test top-level fn referencing param
protocol("api.example.com/$(app_id)/users/$(Num.to_str(user_id))")
protocol("api.example.com/${app_id}/users/${Num.to_str(user_id)}")

## function def referencing top-level value
get_post : U32 -> Str
get_post = \post_id ->
"$(base_url)/posts/$(Num.to_str(post_id))"
"${base_url}/posts/${Num.to_str(post_id)}"

## function def passing top-level function
get_posts : List U32 -> List Str
Expand All @@ -35,13 +35,13 @@ get_posts = \ids ->
## function def calling top-level function
get_post_comments : U32 -> Str
get_post_comments = \post_id ->
"$(get_post(post_id))/comments"
"${get_post(post_id)}/comments"

## function def passing nested function
get_companies : List U32 -> List Str
get_companies = \ids ->
get_company = \id ->
protocol("api.example.com/$(app_id)/companies/$(Num.to_str(id))")
protocol("api.example.com/${app_id}/companies/${Num.to_str(id)}")

List.map(ids, get_company)

Expand All @@ -59,11 +59,11 @@ get_post_aliased =
get_user_safe : U32 -> Str
get_user_safe =
if Str.starts_with(app_id, "prod_") then
\id -> "$(get_user(id))?safe=true"
\id -> "${get_user(id)}?safe=true"
else
get_user

## two-argument function
get_post_comment : U32, U32 -> Str
get_post_comment = \post_id, comment_id ->
"$(get_post(post_id))/comments/$(Num.to_str(comment_id))"
"${get_post(post_id)}/comments/${Num.to_str(comment_id)}"
4 changes: 2 additions & 2 deletions crates/cli/tests/test-projects/module_params/BadAnn.roc
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ module { app_id } -> [fn_annotated_as_value, missing_arg]

fn_annotated_as_value : Str
fn_annotated_as_value = \post_id, comment_id ->
"/posts/$(post_id)/comments/$(Num.to_str(comment_id))"
"/posts/${post_id}/comments/${Num.to_str(comment_id)}"

missing_arg : Str -> Str
missing_arg = \post_id, _ ->
"/posts/$(post_id)/comments"
"/posts/${post_id}/comments"
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module []

https = \url -> "https://$(url)"
https = \url -> "https://${url}"

expect
import Api { app_id: "one", protocol: https }
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/tests/test-projects/module_params/Menu.roc
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ menu = \name ->
indirect(name)

indirect = \name ->
echo("Hi, $(name)!")
echo("Hi, ${name}!")
62 changes: 31 additions & 31 deletions crates/cli/tests/test-projects/module_params/app.roc
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import Api { app_id: "one", protocol: https } as App1
import Api { app_id: "two", protocol: http } as App2
import Api { app_id: "prod_1", protocol: http } as Prod

https = \url -> "https://$(url)"
http = \url -> "http://$(url)"
https = \url -> "https://${url}"
http = \url -> "http://${url}"

users_app1 =
# pass top-level fn in a module with params
Expand All @@ -27,33 +27,33 @@ main =
List.map([1, 2, 3], App3.get_user)

"""
App1.baseUrl: $(App1.base_url)
App2.baseUrl: $(App2.base_url)
App3.baseUrl: $(App3.base_url)
App1.getUser 1: $(App1.get_user(1))
App2.getUser 2: $(App2.get_user(2))
App3.getUser 3: $(App3.get_user(3))
App1.getPost 1: $(App1.get_post(1))
App2.getPost 2: $(App2.get_post(2))
App3.getPost 3: $(App3.get_post(3))
App1.getPosts [1, 2]: $(Inspect.to_str(App1.get_posts([1, 2])))
App2.getPosts [3, 4]: $(Inspect.to_str(App2.get_posts([3, 4])))
App2.getPosts [5, 6]: $(Inspect.to_str(App2.get_posts([5, 6])))
App1.getPostComments 1: $(App1.get_post_comments(1))
App2.getPostComments 2: $(App2.get_post_comments(2))
App2.getPostComments 3: $(App2.get_post_comments(3))
App1.getCompanies [1, 2]: $(Inspect.to_str(App1.get_companies([1, 2])))
App2.getCompanies [3, 4]: $(Inspect.to_str(App2.get_companies([3, 4])))
App2.getCompanies [5, 6]: $(Inspect.to_str(App2.get_companies([5, 6])))
App1.getPostAliased 1: $(App1.get_post_aliased(1))
App2.getPostAliased 2: $(App2.get_post_aliased(2))
App3.getPostAliased 3: $(App3.get_post_aliased(3))
App1.baseUrlAliased: $(App1.base_url_aliased)
App2.baseUrlAliased: $(App2.base_url_aliased)
App3.baseUrlAliased: $(App3.base_url_aliased)
App1.getUserSafe 1: $(App1.get_user_safe(1))
Prod.getUserSafe 2: $(Prod.get_user_safe(2))
usersApp1: $(Inspect.to_str(users_app1))
getUserApp3Nested 3: $(get_user_app3_nested(3))
usersApp3Passed: $(Inspect.to_str(users_app3_passed))
App1.baseUrl: ${App1.base_url}
App2.baseUrl: ${App2.base_url}
App3.baseUrl: ${App3.base_url}
App1.getUser 1: ${App1.get_user(1)}
App2.getUser 2: ${App2.get_user(2)}
App3.getUser 3: ${App3.get_user(3)}
App1.getPost 1: ${App1.get_post(1)}
App2.getPost 2: ${App2.get_post(2)}
App3.getPost 3: ${App3.get_post(3)}
App1.getPosts [1, 2]: ${Inspect.to_str(App1.get_posts([1, 2]))}
App2.getPosts [3, 4]: ${Inspect.to_str(App2.get_posts([3, 4]))}
App2.getPosts [5, 6]: ${Inspect.to_str(App2.get_posts([5, 6]))}
App1.getPostComments 1: ${App1.get_post_comments(1)}
App2.getPostComments 2: ${App2.get_post_comments(2)}
App2.getPostComments 3: ${App2.get_post_comments(3)}
App1.getCompanies [1, 2]: ${Inspect.to_str(App1.get_companies([1, 2]))}
App2.getCompanies [3, 4]: ${Inspect.to_str(App2.get_companies([3, 4]))}
App2.getCompanies [5, 6]: ${Inspect.to_str(App2.get_companies([5, 6]))}
App1.getPostAliased 1: ${App1.get_post_aliased(1)}
App2.getPostAliased 2: ${App2.get_post_aliased(2)}
App3.getPostAliased 3: ${App3.get_post_aliased(3)}
App1.baseUrlAliased: ${App1.base_url_aliased}
App2.baseUrlAliased: ${App2.base_url_aliased}
App3.baseUrlAliased: ${App3.base_url_aliased}
App1.getUserSafe 1: ${App1.get_user_safe(1)}
Prod.getUserSafe 2: ${Prod.get_user_safe(2)}
usersApp1: ${Inspect.to_str(users_app1)}
getUserApp3Nested 3: ${get_user_app3_nested(3)}
usersApp3Passed: ${Inspect.to_str(users_app3_passed)}
"""
Loading

0 comments on commit 7643f89

Please sign in to comment.