@harmoniclabs/pebble 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ast/nodes/expr/IsExpr.d.ts +10 -1
- package/dist/ast/nodes/expr/IsExpr.js +9 -13
- package/dist/ast/nodes/expr/PebbleExpr.d.ts +2 -1
- package/dist/ast/nodes/expr/PebbleExpr.js +2 -1
- package/dist/ast/nodes/statements/declarations/ContractDecl.d.ts +3 -1
- package/dist/ast/nodes/statements/declarations/ContractDecl.js +3 -1
- package/dist/ast/nodes/statements/declarations/StateDecl.d.ts +12 -0
- package/dist/ast/nodes/statements/declarations/StateDecl.js +12 -0
- package/dist/compiler/AstCompiler/internal/_deriveContractBody/_deriveContractBody.js +155 -6
- package/dist/compiler/AstCompiler/internal/exprs/_compileCaseExpr.d.ts +1 -1
- package/dist/compiler/AstCompiler/internal/exprs/_compileCaseExpr.js +30 -4
- package/dist/compiler/AstCompiler/internal/exprs/_compileExpr.js +4 -1
- package/dist/compiler/AstCompiler/internal/exprs/_compileIsExpr.d.ts +5 -1
- package/dist/compiler/AstCompiler/internal/exprs/_compileIsExpr.js +20 -41
- package/dist/compiler/AstCompiler/internal/exprs/_compileTernaryExpr.js +7 -2
- package/dist/compiler/AstCompiler/internal/statements/_compileAssertStmt.js +4 -0
- package/dist/compiler/AstCompiler/internal/statements/_compileIfStmt.js +7 -2
- package/dist/compiler/AstCompiler/internal/statements/_compileMatchStmt.d.ts +1 -1
- package/dist/compiler/AstCompiler/internal/statements/_compileMatchStmt.js +17 -4
- package/dist/compiler/AstCompiler/scope/AstScope.d.ts +12 -0
- package/dist/compiler/AstCompiler/scope/AstScope.js +25 -2
- package/dist/compiler/AstCompiler/utils/extractIsNarrowings.d.ts +30 -0
- package/dist/compiler/AstCompiler/utils/extractIsNarrowings.js +110 -0
- package/dist/compiler/Compiler.js +7 -3
- package/dist/compiler/TirCompiler/expressify/expressifyVars.js +6 -0
- package/dist/compiler/tir/expressions/TirCallExpr.js +4 -0
- package/dist/compiler/tir/expressions/TirCaseExpr.js +38 -7
- package/dist/compiler/tir/expressions/TirExpr.d.ts +2 -1
- package/dist/compiler/tir/expressions/TirExpr.js +2 -1
- package/dist/compiler/tir/expressions/TirFuncExpr.js +4 -1
- package/dist/compiler/tir/expressions/TirIsExpr.d.ts +23 -0
- package/dist/compiler/tir/expressions/TirIsExpr.js +87 -0
- package/dist/compiler/tir/types/TirStructType.d.ts +33 -2
- package/dist/compiler/tir/types/TirStructType.js +69 -4
- package/dist/compiler/tir/types/utils/canAssignTo.js +14 -0
- package/dist/parser/Parser.d.ts +2 -0
- package/dist/parser/Parser.js +87 -22
- package/dist/tokenizer/Token.d.ts +79 -78
- package/dist/tokenizer/Token.js +79 -78
- package/dist/tokenizer/utils/tokenFromKeyword.js +7 -2
- package/dist/tokenizer/utils/tokenIsAlsoIdentifier.js +1 -0
- package/package.json +1 -1
package/dist/tokenizer/Token.js
CHANGED
|
@@ -83,135 +83,136 @@ export var Token;
|
|
|
83
83
|
Token[Token["Contract"] = 42] = "Contract";
|
|
84
84
|
Token[Token["Param"] = 43] = "Param";
|
|
85
85
|
Token[Token["Spend"] = 44] = "Spend";
|
|
86
|
-
Token[Token["
|
|
87
|
-
Token[Token["
|
|
88
|
-
Token[Token["
|
|
89
|
-
Token[Token["
|
|
90
|
-
Token[Token["
|
|
91
|
-
Token[Token["
|
|
86
|
+
Token[Token["State"] = 45] = "State";
|
|
87
|
+
Token[Token["Mint"] = 46] = "Mint";
|
|
88
|
+
Token[Token["Certify"] = 47] = "Certify";
|
|
89
|
+
Token[Token["Withdraw"] = 48] = "Withdraw";
|
|
90
|
+
Token[Token["Propose"] = 49] = "Propose";
|
|
91
|
+
Token[Token["Vote"] = 50] = "Vote";
|
|
92
|
+
Token[Token["Context"] = 51] = "Context";
|
|
92
93
|
// punctuation
|
|
93
94
|
/** `{` */
|
|
94
|
-
Token[Token["OpenBrace"] =
|
|
95
|
+
Token[Token["OpenBrace"] = 52] = "OpenBrace";
|
|
95
96
|
/** `}` */
|
|
96
|
-
Token[Token["CloseBrace"] =
|
|
97
|
-
Token[Token["OpenParen"] =
|
|
98
|
-
Token[Token["CloseParen"] =
|
|
97
|
+
Token[Token["CloseBrace"] = 53] = "CloseBrace";
|
|
98
|
+
Token[Token["OpenParen"] = 54] = "OpenParen";
|
|
99
|
+
Token[Token["CloseParen"] = 55] = "CloseParen";
|
|
99
100
|
/** `[` */
|
|
100
|
-
Token[Token["OpenBracket"] =
|
|
101
|
+
Token[Token["OpenBracket"] = 56] = "OpenBracket";
|
|
101
102
|
/** `]` */
|
|
102
|
-
Token[Token["CloseBracket"] =
|
|
103
|
+
Token[Token["CloseBracket"] = 57] = "CloseBracket";
|
|
103
104
|
/** `.` */
|
|
104
|
-
Token[Token["Dot"] =
|
|
105
|
+
Token[Token["Dot"] = 58] = "Dot";
|
|
105
106
|
/** `...` */
|
|
106
|
-
Token[Token["Dot_Dot_Dot"] =
|
|
107
|
+
Token[Token["Dot_Dot_Dot"] = 59] = "Dot_Dot_Dot";
|
|
107
108
|
/** `;` */
|
|
108
|
-
Token[Token["Semicolon"] =
|
|
109
|
+
Token[Token["Semicolon"] = 60] = "Semicolon";
|
|
109
110
|
/** `,` */
|
|
110
|
-
Token[Token["Comma"] =
|
|
111
|
+
Token[Token["Comma"] = 61] = "Comma";
|
|
111
112
|
/** `<` */
|
|
112
|
-
Token[Token["LessThan"] =
|
|
113
|
+
Token[Token["LessThan"] = 62] = "LessThan";
|
|
113
114
|
/** `>` */
|
|
114
|
-
Token[Token["GreaterThan"] =
|
|
115
|
+
Token[Token["GreaterThan"] = 63] = "GreaterThan";
|
|
115
116
|
/** `<=` */
|
|
116
|
-
Token[Token["LessThan_Equals"] =
|
|
117
|
+
Token[Token["LessThan_Equals"] = 64] = "LessThan_Equals";
|
|
117
118
|
/** `>=` */
|
|
118
|
-
Token[Token["GreaterThan_Equals"] =
|
|
119
|
+
Token[Token["GreaterThan_Equals"] = 65] = "GreaterThan_Equals";
|
|
119
120
|
/** `==` */
|
|
120
|
-
Token[Token["Equals_Equals"] =
|
|
121
|
+
Token[Token["Equals_Equals"] = 66] = "Equals_Equals";
|
|
121
122
|
/** `!=` */
|
|
122
|
-
Token[Token["Exclamation_Equals"] =
|
|
123
|
+
Token[Token["Exclamation_Equals"] = 67] = "Exclamation_Equals";
|
|
123
124
|
/** `===` */
|
|
124
|
-
Token[Token["Equals_Equals_Equals"] =
|
|
125
|
+
Token[Token["Equals_Equals_Equals"] = 68] = "Equals_Equals_Equals";
|
|
125
126
|
/** `!==` */
|
|
126
|
-
Token[Token["Exclamation_Equals_Equals"] =
|
|
127
|
+
Token[Token["Exclamation_Equals_Equals"] = 69] = "Exclamation_Equals_Equals";
|
|
127
128
|
/** `=>` */
|
|
128
|
-
Token[Token["FatArrow"] =
|
|
129
|
+
Token[Token["FatArrow"] = 70] = "FatArrow";
|
|
129
130
|
/** `+` */
|
|
130
|
-
Token[Token["Plus"] =
|
|
131
|
+
Token[Token["Plus"] = 71] = "Plus";
|
|
131
132
|
/** `-` */
|
|
132
|
-
Token[Token["Minus"] =
|
|
133
|
+
Token[Token["Minus"] = 72] = "Minus";
|
|
133
134
|
/** `**` */
|
|
134
|
-
Token[Token["Asterisk_Asterisk"] =
|
|
135
|
+
Token[Token["Asterisk_Asterisk"] = 73] = "Asterisk_Asterisk";
|
|
135
136
|
/** `*` */
|
|
136
|
-
Token[Token["Asterisk"] =
|
|
137
|
+
Token[Token["Asterisk"] = 74] = "Asterisk";
|
|
137
138
|
/** `/` */
|
|
138
|
-
Token[Token["Slash"] =
|
|
139
|
+
Token[Token["Slash"] = 75] = "Slash";
|
|
139
140
|
/** `%` */
|
|
140
|
-
Token[Token["Percent"] =
|
|
141
|
+
Token[Token["Percent"] = 76] = "Percent";
|
|
141
142
|
/** `++` */
|
|
142
|
-
Token[Token["Plus_Plus"] =
|
|
143
|
+
Token[Token["Plus_Plus"] = 77] = "Plus_Plus";
|
|
143
144
|
/** `--` */
|
|
144
|
-
Token[Token["Minus_Minus"] =
|
|
145
|
+
Token[Token["Minus_Minus"] = 78] = "Minus_Minus";
|
|
145
146
|
/** `<<` */
|
|
146
|
-
Token[Token["LessThan_LessThan"] =
|
|
147
|
+
Token[Token["LessThan_LessThan"] = 79] = "LessThan_LessThan";
|
|
147
148
|
/** `>>` */
|
|
148
|
-
Token[Token["GreaterThan_GreaterThan"] =
|
|
149
|
+
Token[Token["GreaterThan_GreaterThan"] = 80] = "GreaterThan_GreaterThan";
|
|
149
150
|
/** `>>>` */
|
|
150
|
-
Token[Token["GreaterThan_GreaterThan_GreaterThan"] =
|
|
151
|
+
Token[Token["GreaterThan_GreaterThan_GreaterThan"] = 81] = "GreaterThan_GreaterThan_GreaterThan";
|
|
151
152
|
/** `+` */
|
|
152
|
-
Token[Token["Ampersand"] =
|
|
153
|
+
Token[Token["Ampersand"] = 82] = "Ampersand";
|
|
153
154
|
/** `|` */
|
|
154
|
-
Token[Token["Bar"] =
|
|
155
|
+
Token[Token["Bar"] = 83] = "Bar";
|
|
155
156
|
/** `^` */
|
|
156
|
-
Token[Token["Caret"] =
|
|
157
|
+
Token[Token["Caret"] = 84] = "Caret";
|
|
157
158
|
/** `!` */
|
|
158
|
-
Token[Token["Exclamation"] =
|
|
159
|
+
Token[Token["Exclamation"] = 85] = "Exclamation";
|
|
159
160
|
/** `~` */
|
|
160
|
-
Token[Token["Tilde"] =
|
|
161
|
+
Token[Token["Tilde"] = 86] = "Tilde";
|
|
161
162
|
/** `&&` */
|
|
162
|
-
Token[Token["Ampersand_Ampersand"] =
|
|
163
|
+
Token[Token["Ampersand_Ampersand"] = 87] = "Ampersand_Ampersand";
|
|
163
164
|
/** `||` */
|
|
164
|
-
Token[Token["Bar_Bar"] =
|
|
165
|
+
Token[Token["Bar_Bar"] = 88] = "Bar_Bar";
|
|
165
166
|
/** `?` */
|
|
166
|
-
Token[Token["Question"] =
|
|
167
|
+
Token[Token["Question"] = 89] = "Question";
|
|
167
168
|
/** `:` */
|
|
168
|
-
Token[Token["Colon"] =
|
|
169
|
+
Token[Token["Colon"] = 90] = "Colon";
|
|
169
170
|
/** `=` */
|
|
170
|
-
Token[Token["Equals"] =
|
|
171
|
-
Token[Token["Plus_Equals"] =
|
|
172
|
-
Token[Token["Minus_Equals"] =
|
|
173
|
-
Token[Token["Asterisk_Equals"] =
|
|
174
|
-
Token[Token["Asterisk_Asterisk_Equals"] =
|
|
175
|
-
Token[Token["Slash_Equals"] =
|
|
176
|
-
Token[Token["Percent_Equals"] =
|
|
177
|
-
Token[Token["LessThan_LessThan_Equals"] =
|
|
178
|
-
Token[Token["GreaterThan_GreaterThan_Equals"] =
|
|
179
|
-
Token[Token["GreaterThan_GreaterThan_GreaterThan_Equals"] =
|
|
180
|
-
Token[Token["Ampersand_Equals"] =
|
|
181
|
-
Token[Token["Bar_Equals"] =
|
|
182
|
-
Token[Token["Caret_Equals"] =
|
|
183
|
-
Token[Token["At"] =
|
|
171
|
+
Token[Token["Equals"] = 91] = "Equals";
|
|
172
|
+
Token[Token["Plus_Equals"] = 92] = "Plus_Equals";
|
|
173
|
+
Token[Token["Minus_Equals"] = 93] = "Minus_Equals";
|
|
174
|
+
Token[Token["Asterisk_Equals"] = 94] = "Asterisk_Equals";
|
|
175
|
+
Token[Token["Asterisk_Asterisk_Equals"] = 95] = "Asterisk_Asterisk_Equals";
|
|
176
|
+
Token[Token["Slash_Equals"] = 96] = "Slash_Equals";
|
|
177
|
+
Token[Token["Percent_Equals"] = 97] = "Percent_Equals";
|
|
178
|
+
Token[Token["LessThan_LessThan_Equals"] = 98] = "LessThan_LessThan_Equals";
|
|
179
|
+
Token[Token["GreaterThan_GreaterThan_Equals"] = 99] = "GreaterThan_GreaterThan_Equals";
|
|
180
|
+
Token[Token["GreaterThan_GreaterThan_GreaterThan_Equals"] = 100] = "GreaterThan_GreaterThan_GreaterThan_Equals";
|
|
181
|
+
Token[Token["Ampersand_Equals"] = 101] = "Ampersand_Equals";
|
|
182
|
+
Token[Token["Bar_Equals"] = 102] = "Bar_Equals";
|
|
183
|
+
Token[Token["Caret_Equals"] = 103] = "Caret_Equals";
|
|
184
|
+
Token[Token["At"] = 104] = "At";
|
|
184
185
|
/** `??=` */
|
|
185
|
-
Token[Token["Question_Question_Equals"] =
|
|
186
|
+
Token[Token["Question_Question_Equals"] = 105] = "Question_Question_Equals";
|
|
186
187
|
/** `||=` */
|
|
187
|
-
Token[Token["Bar_Bar_Equals"] =
|
|
188
|
+
Token[Token["Bar_Bar_Equals"] = 106] = "Bar_Bar_Equals";
|
|
188
189
|
/** `&&=` */
|
|
189
|
-
Token[Token["Ampersand_Ampersand_Equals"] =
|
|
190
|
+
Token[Token["Ampersand_Ampersand_Equals"] = 107] = "Ampersand_Ampersand_Equals";
|
|
190
191
|
/** `??` */
|
|
191
|
-
Token[Token["Question_Question"] =
|
|
192
|
+
Token[Token["Question_Question"] = 108] = "Question_Question";
|
|
192
193
|
/** `?.` */
|
|
193
|
-
Token[Token["Question_Dot"] =
|
|
194
|
+
Token[Token["Question_Dot"] = 109] = "Question_Dot";
|
|
194
195
|
/** `!.` */
|
|
195
|
-
Token[Token["Exclamation_Dot"] =
|
|
196
|
+
Token[Token["Exclamation_Dot"] = 110] = "Exclamation_Dot";
|
|
196
197
|
// custom native types for pebble
|
|
197
|
-
Token[Token["Data"] =
|
|
198
|
-
Token[Token["Bytes"] =
|
|
199
|
-
Token[Token["Optional"] =
|
|
200
|
-
Token[Token["List"] =
|
|
201
|
-
Token[Token["LinearMap"] =
|
|
198
|
+
Token[Token["Data"] = 111] = "Data";
|
|
199
|
+
Token[Token["Bytes"] = 112] = "Bytes";
|
|
200
|
+
Token[Token["Optional"] = 113] = "Optional";
|
|
201
|
+
Token[Token["List"] = 114] = "List";
|
|
202
|
+
Token[Token["LinearMap"] = 115] = "LinearMap";
|
|
202
203
|
// struct decl modifiers
|
|
203
204
|
// taggedModifier, // `tagged` data struct
|
|
204
|
-
Token[Token["Runtime"] =
|
|
205
|
+
Token[Token["Runtime"] = 116] = "Runtime";
|
|
205
206
|
// literals
|
|
206
|
-
Token[Token["Identifier"] =
|
|
207
|
-
Token[Token["StringLiteral"] =
|
|
208
|
-
Token[Token["HexBytesLiteral"] =
|
|
209
|
-
Token[Token["IntegerLiteral"] =
|
|
207
|
+
Token[Token["Identifier"] = 117] = "Identifier";
|
|
208
|
+
Token[Token["StringLiteral"] = 118] = "StringLiteral";
|
|
209
|
+
Token[Token["HexBytesLiteral"] = 119] = "HexBytesLiteral";
|
|
210
|
+
Token[Token["IntegerLiteral"] = 120] = "IntegerLiteral";
|
|
210
211
|
// FloatLiteral,
|
|
211
|
-
Token[Token["StringTemplateLiteralQuote"] =
|
|
212
|
+
Token[Token["StringTemplateLiteralQuote"] = 121] = "StringTemplateLiteralQuote";
|
|
212
213
|
// meta
|
|
213
|
-
Token[Token["Invalid"] =
|
|
214
|
-
Token[Token["EndOfFile"] =
|
|
214
|
+
Token[Token["Invalid"] = 122] = "Invalid";
|
|
215
|
+
Token[Token["EndOfFile"] = 123] = "EndOfFile";
|
|
215
216
|
})(Token || (Token = {}));
|
|
216
217
|
Object.freeze(Token);
|
|
217
218
|
/*
|
|
@@ -179,6 +179,13 @@ export function tokenFromKeyword(text) {
|
|
|
179
179
|
break;
|
|
180
180
|
}
|
|
181
181
|
case 115 /* CharCode.s */: {
|
|
182
|
+
if (len === 5) {
|
|
183
|
+
if (text === "spend")
|
|
184
|
+
return Token.Spend;
|
|
185
|
+
if (text === "state")
|
|
186
|
+
return Token.State;
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
182
189
|
if (len === 6) {
|
|
183
190
|
// if (text === "switch") return Token.Switch;
|
|
184
191
|
if (text === "static")
|
|
@@ -187,8 +194,6 @@ export function tokenFromKeyword(text) {
|
|
|
187
194
|
return Token.Struct;
|
|
188
195
|
break;
|
|
189
196
|
}
|
|
190
|
-
if (text === "spend")
|
|
191
|
-
return Token.Spend;
|
|
192
197
|
// if (text === "set") return Token.Set;
|
|
193
198
|
// if (text === "super") return Token.Super;
|
|
194
199
|
break;
|
package/package.json
CHANGED