From 8dcaac1aa5301743da239291b20b733712fcee2d Mon Sep 17 00:00:00 2001 From: shoujohnny Date: Sun, 13 Apr 2025 23:46:57 -0400 Subject: [PATCH 1/4] Update bsl-lang-specific-checks.rkt added error messages to *, ^, ~, and &. also added a new error message for |. --- .../froglet/lang/bsl-lang-specific-checks.rkt | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/forge/froglet/lang/bsl-lang-specific-checks.rkt b/forge/froglet/lang/bsl-lang-specific-checks.rkt index f911ab21..3fb49a32 100644 --- a/forge/froglet/lang/bsl-lang-specific-checks.rkt +++ b/forge/froglet/lang/bsl-lang-specific-checks.rkt @@ -150,7 +150,12 @@ (define (check-node-expr-op-& expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "&" expr-node loc))) + (raise-bsl-relational-error "&" expr-node loc "Set intersection (`&`) is not supported. Consider using `and` or `&&` instead."))) + +(define (check-node-expr-op-| expr-node node-type child-types) + (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) + (define loc (nodeinfo-loc (node-info expr-node))) + (raise-bsl-relational-error "|" expr-node loc "Bitwise operator (`|`) is not supported. Consider using `or` or `||` instead."))) (define (check-node-expr-op--> expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) @@ -170,17 +175,17 @@ (define (check-node-expr-op-^ expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "^" expr-node loc))) + (raise-bsl-relational-error "^" expr-node loc "The `^` operator is unsupported in Froglet. Transitive closure isn't available here."))) (define (check-node-expr-op-* expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "*" expr-node loc))) + (raise-bsl-relational-error "*" expr-node loc "You may have meant to use the `multiply` predicate instead."))) (define (check-node-expr-op-~ expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "~~" expr-node loc))) + (raise-bsl-relational-error "~~" expr-node loc "Bitwise operator (`~`) is not supported. Consider using `not` or `!` instead."))) (define bsl-checker-hash (make-hash)) (hash-set! bsl-checker-hash node/formula/multiplicity check-formula-mult) @@ -275,22 +280,27 @@ (define (check-args-node-expr-op-& expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "&" expr-args loc))) + (raise-bsl-relational-error-expr-args "&" expr-args loc "Set intersection (`&`) is not supported. Consider using `and` or `&&` instead."))) + +(define (check-args-node-expr-op-| expr-args info) + (when (eq? (nodeinfo-lang info) LANG_ID) + (define loc (nodeinfo-loc info)) + (raise-bsl-relational-error-expr-args "|" expr-args loc "Bitwise operator (`|`) is not supported. Consider using `or` or `||` instead."))) (define (check-args-node-expr-op-^ expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "^" expr-args loc))) + (raise-bsl-relational-error-expr-args "^" expr-args loc "The `^` operator is unsupported in Froglet. Transitive closure isn't available here."))) (define (check-args-node-expr-op-* expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "*" expr-args loc))) + (raise-bsl-relational-error-expr-args "*" expr-args loc "You may have meant to use the `multiply` predicate instead."))) (define (check-args-node-expr-op-~ expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "~" expr-args loc))) + (raise-bsl-relational-error-expr-args "~" expr-args loc "Bitwise operator (`~`) is not supported. Consider using `not` or `!` instead."))) ; Prevent the forge/core arity error from appearing, since it breaks closure (define (check-args-node-formula-op-= expr-args info) From 9e46680fb46de7c18d6f49de75a40995df5372dd Mon Sep 17 00:00:00 2001 From: shoujohnny Date: Mon, 28 Apr 2025 10:43:02 -0400 Subject: [PATCH 2/4] Update bsl-lang-specific-checks.rkt changed error messages to format of: The `&` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant intersection, use `and` or `&&` instead. --- .../froglet/lang/bsl-lang-specific-checks.rkt | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/forge/froglet/lang/bsl-lang-specific-checks.rkt b/forge/froglet/lang/bsl-lang-specific-checks.rkt index 3fb49a32..ebc3678f 100644 --- a/forge/froglet/lang/bsl-lang-specific-checks.rkt +++ b/forge/froglet/lang/bsl-lang-specific-checks.rkt @@ -140,27 +140,27 @@ (define (check-node-expr-op-+ expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "+" expr-node loc "You may have meant to use the `add` predicate instead."))) + (raise-bsl-relational-error "+" expr-node loc "The `+` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant addition, use the `add` predicate instead."))) (define (check-node-expr-op-- expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "-" expr-node loc "You may have meant to use the `subtract` predicate instead."))) + (raise-bsl-relational-error "-" expr-node loc "The `-` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant subtraction, use the `subtract` predicate instead."))) (define (check-node-expr-op-& expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "&" expr-node loc "Set intersection (`&`) is not supported. Consider using `and` or `&&` instead."))) + (raise-bsl-relational-error "&" expr-node loc "The `&` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant intersection, use `and` or `&&` instead."))) (define (check-node-expr-op-| expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "|" expr-node loc "Bitwise operator (`|`) is not supported. Consider using `or` or `||` instead."))) + (raise-bsl-relational-error "|" expr-node loc "The `|` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant logical-or, use `or` or '||' instead."))) (define (check-node-expr-op--> expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-error "Use of -> in expressions is not allowed in forge/bsl" expr-node loc))) + (raise-bsl-error "The `->` operator is only used for field declaration in Froglet." expr-node loc))) (define (check-node-expr-op-join expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) @@ -175,17 +175,17 @@ (define (check-node-expr-op-^ expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "^" expr-node loc "The `^` operator is unsupported in Froglet. Transitive closure isn't available here."))) + (raise-bsl-relational-error "^" expr-node loc "The `^` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant exclusive-or, use the `xor` operator instead."))) (define (check-node-expr-op-* expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "*" expr-node loc "You may have meant to use the `multiply` predicate instead."))) + (raise-bsl-relational-error "*" expr-node loc "The `*` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant multiplication, use the `multiply` predicate instead."))) (define (check-node-expr-op-~ expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "~~" expr-node loc "Bitwise operator (`~`) is not supported. Consider using `not` or `!` instead."))) + (raise-bsl-relational-error "~~" expr-node loc "The `~` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant logical-negation, use `not` or '!' instead."))) (define bsl-checker-hash (make-hash)) (hash-set! bsl-checker-hash node/formula/multiplicity check-formula-mult) @@ -264,43 +264,43 @@ (define (check-args-node-expr-op--> expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-error-deparsed-str "Direct use of -> in a formula is not allowed in Froglet" (format "(~a->~a)" (deparse (first expr-args)) (deparse (second expr-args))) loc))) + (raise-bsl-error-deparsed-str "The `->` operator is only used for field declaration in Froglet." (format "(~a->~a)" (deparse (first expr-args)) (deparse (second expr-args))) loc))) (define (check-args-node-expr-op-+ expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "+" expr-args loc "You may have meant to use the `add` predicate instead."))) + (raise-bsl-relational-error-expr-args "+" expr-args loc "The `+` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant addition, use the `add` predicate instead."))) (define (check-args-node-expr-op-- expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "-" expr-args loc "You may have meant to use the `subtract` predicate instead."))) + (raise-bsl-relational-error-expr-args "-" expr-args loc "The `-` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant subtraction, use the `subtract` predicate instead."))) (define (check-args-node-expr-op-& expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "&" expr-args loc "Set intersection (`&`) is not supported. Consider using `and` or `&&` instead."))) + (raise-bsl-relational-error-expr-args "&" expr-args loc "The `&` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant intersection, use `and` or `&&` instead."))) (define (check-args-node-expr-op-| expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "|" expr-args loc "Bitwise operator (`|`) is not supported. Consider using `or` or `||` instead."))) + (raise-bsl-relational-error-expr-args "|" expr-args loc "The `|` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant logical-or, use `or` or '||' instead."))) (define (check-args-node-expr-op-^ expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "^" expr-args loc "The `^` operator is unsupported in Froglet. Transitive closure isn't available here."))) + (raise-bsl-relational-error-expr-args "^" expr-args loc "The `^` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant exclusive-or, use the `xor` operator instead."))) (define (check-args-node-expr-op-* expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "*" expr-args loc "You may have meant to use the `multiply` predicate instead."))) + (raise-bsl-relational-error-expr-args "*" expr-args loc "The `*` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant multiplication, use the `multiply` predicate instead."))) (define (check-args-node-expr-op-~ expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "~" expr-args loc "Bitwise operator (`~`) is not supported. Consider using `not` or `!` instead."))) + (raise-bsl-relational-error-expr-args "~" expr-args loc "The `~` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant logical-negation, use `not` or '!' instead."))) ; Prevent the forge/core arity error from appearing, since it breaks closure (define (check-args-node-formula-op-= expr-args info) From cabfe8135e74cf2ab44d3efd2ae12d9360cf0ebb Mon Sep 17 00:00:00 2001 From: shoujohnny Date: Mon, 5 May 2025 15:43:11 -0400 Subject: [PATCH 3/4] Update bsl-lang-specific-checks.rkt updated error changes after review --- forge/froglet/lang/bsl-lang-specific-checks.rkt | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/forge/froglet/lang/bsl-lang-specific-checks.rkt b/forge/froglet/lang/bsl-lang-specific-checks.rkt index ebc3678f..c04c0ae0 100644 --- a/forge/froglet/lang/bsl-lang-specific-checks.rkt +++ b/forge/froglet/lang/bsl-lang-specific-checks.rkt @@ -150,12 +150,7 @@ (define (check-node-expr-op-& expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "&" expr-node loc "The `&` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant intersection, use `and` or `&&` instead."))) - -(define (check-node-expr-op-| expr-node node-type child-types) - (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) - (define loc (nodeinfo-loc (node-info expr-node))) - (raise-bsl-relational-error "|" expr-node loc "The `|` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant logical-or, use `or` or '||' instead."))) + (raise-bsl-relational-error "&" expr-node loc "The `&` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant logical-and, use `and` or `&&` instead."))) (define (check-node-expr-op--> expr-node node-type child-types) (when (eq? (nodeinfo-lang (node-info expr-node)) LANG_ID) @@ -282,11 +277,6 @@ (define loc (nodeinfo-loc info)) (raise-bsl-relational-error-expr-args "&" expr-args loc "The `&` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant intersection, use `and` or `&&` instead."))) -(define (check-args-node-expr-op-| expr-args info) - (when (eq? (nodeinfo-lang info) LANG_ID) - (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "|" expr-args loc "The `|` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant logical-or, use `or` or '||' instead."))) - (define (check-args-node-expr-op-^ expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) From 2dc76a413996ff58d9a1e03495c6937757d9e932 Mon Sep 17 00:00:00 2001 From: Tim Nelson Date: Thu, 13 Nov 2025 12:15:22 -0500 Subject: [PATCH 4/4] Update error message for '&' operator in Froglet --- forge/froglet/lang/bsl-lang-specific-checks.rkt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge/froglet/lang/bsl-lang-specific-checks.rkt b/forge/froglet/lang/bsl-lang-specific-checks.rkt index c04c0ae0..a82440cf 100644 --- a/forge/froglet/lang/bsl-lang-specific-checks.rkt +++ b/forge/froglet/lang/bsl-lang-specific-checks.rkt @@ -275,7 +275,7 @@ (define (check-args-node-expr-op-& expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID) (define loc (nodeinfo-loc info)) - (raise-bsl-relational-error-expr-args "&" expr-args loc "The `&` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant intersection, use `and` or `&&` instead."))) + (raise-bsl-relational-error-expr-args "&" expr-args loc "The `&` operator is not used in Froglet, but is reserved for use in other Forge languages. If you meant logical-and, use `and` or `&&` instead."))) (define (check-args-node-expr-op-^ expr-args info) (when (eq? (nodeinfo-lang info) LANG_ID)