aboutsummaryrefslogtreecommitdiff
path: root/compatibility/4.11.nom
blob: 042da1e16a757d3ddb7b90b7723a3602ae926673 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env nomsu -V4.11.12.8
#
    This file defines upgrades from Nomsu <4.11 to Nomsu 4.11
    (overhaul of function literals, deleting (if all of ...), etc. shorthand)
    
use "compatibility/compatibility.nom"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Overhaul of function literals:
upgrade action "call 1 with" to "4.11" via (..)
    for (%tree %end_version):
        %tree2 = {type: "Action", source: %tree.source, 1: %tree.2}
        for %arg in %tree.4 at %i:
            %tree2.(%i + 1) = %arg
        return (SyntaxTree %tree2)
upgrade action (-> %yield_value) to "4.11" as (yield %yield_value)

# Replace set {%x:1, %y:2} with [%x, %y] = [1, 2]
upgrade action "set" to "4.11" via (..)
    for (%tree %end_version):
        [%lhs, %rhs] = [\[], \[]]
        %lhs.source = %tree.(2).source
        %rhs.source = %tree.(2).source
        for %entry in %tree.2 at %i:
            %lhs.%i = %entry.1
            %rhs.%i = %entry.2
        return (SyntaxTree {type: "Action", source: %tree.source, 1: %lhs, 2: "=", 3: %rhs})

# Changing filesystem API:
upgrade action (for file %f in %path %body) to "4.11" as (..)
    for %f in (files for %path) %body

upgrade action (%expr for file %f in %path) to "4.11" as [..]
    : for %f in (files for %path): add %expr

upgrade action (line %n in %text) to "4.11" as (%text::line %n)
upgrade action (line number of %pos in %text) to "4.11" as (..)
    %text::line number at %pos

# Deduplicating goto labels:
upgrade action [=== %label ===, *** %label ***] to "4.11" as (--- %label ---)
upgrade action [===stop %label ===, ***stop %label ***] to "4.11" as (---stop %label ---)
upgrade action [===next %label ===, ***next %label ***] to "4.11" as (---next %label ---)

# Deprecating shorthand functions:
upgrade action [if all of %items %body, if all of %items then %body] to "4.11" as (..)
    if (all of %items) %body

upgrade action [unless all of %items %body, unless all of %items then %body] to \
.."4.11" as (if (not (all of %items)) %body)

upgrade action [if any of %items %body, if any of %items then %body] to "4.11" as (..)
    if (any of %items) %body

upgrade action [unless any of %items %body, unless any of %items then %body] to \
.."4.11" as (if (not (any of %items)) %body)

upgrade action [if none of %items %body, if none of %items then %body] to "4.11" \
..as (if (not (any of %items)) %body)

upgrade action [unless none of %items %body, unless none of %items then %body] to \
.."4.11" as (if (any of %items) %body)

upgrade action [..]
    if all of %items %body else %else, if all of %items then %body else %else
..to "4.11" as (if (all of %items) %body else %else)

upgrade action [..]
    unless all of %items %body else %else, unless all of %items then %body else %else
..to "4.11" as (if (not (all of %items)) %body else %else)

upgrade action [..]
    if any of %items %body else %else, if any of %items then %body else %else
..to "4.11" as (if (any of %items) %body else %else)

upgrade action [..]
    unless any of %items %body else %else, unless any of %items then %body else %else
..to "4.11" as (if (not (any of %items)) %body else %else)

upgrade action [..]
    if none of %items %body else %else, if none of %items then %body else %else
..to "4.11" as (if (not (any of %items)) %body else %else)

upgrade action [..]
    unless none of %items %body else %else, unless none of %items then %body else %else
..to "4.11" as (if (any of %items) %body else %else)