Skip to content
This repository was archived by the owner on Feb 28, 2022. It is now read-only.

Commit 0d443dd

Browse files
authored
Merge pull request #24 from FuelLabs/silentcicero-unsafemaths
Allow for unsafeMaths
2 parents a889df4 + 26339c7 commit 0d443dd

File tree

4 files changed

+37
-2
lines changed

4 files changed

+37
-2
lines changed

examples/example.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,6 @@ const source = yulp.compile(`
5252
}
5353
`, fs, './examples');
5454

55-
console.log(yulp.print(source.results), source);
55+
const yulOutput = yulp.print(source.results);
56+
57+
console.log(yulOutput);

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "yulp",
3-
"version": "0.2.2",
3+
"version": "0.2.3",
44
"description": "A low-level highly-efficient language for the Ethereum Virtual Machine.",
55
"main": "src/index.js",
66
"scripts": {

src/index.test.js

+12
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,18 @@ test('yulp should be yul', t => {
149149
t.equal(print(compile(` object "SimpleStore" { code { const nick := 0 } } `).results),
150150
`object \"SimpleStore\" { code { } }`, 'const');
151151

152+
t.equal(print(compile(` object "SimpleStore" { code { const nick := unsafeAdd(1, 2) } } `).results),
153+
`object \"SimpleStore\" { code { let nick := add(1, 2) } }`, 'unsafe add');
154+
155+
t.equal(print(compile(` object "SimpleStore" { code { const nick := unsafeDiv(1, 2) } } `).results),
156+
`object \"SimpleStore\" { code { let nick := div(1, 2) } }`, 'unsafe div');
157+
158+
t.equal(print(compile(` object "SimpleStore" { code { const nick := unsafeMul(1, 2) } } `).results),
159+
`object \"SimpleStore\" { code { let nick := mul(1, 2) } }`, 'unsafe mul');
160+
161+
t.equal(print(compile(` object "SimpleStore" { code { const nick := unsafeSub(1, 2) } } `).results),
162+
`object \"SimpleStore\" { code { let nick := sub(1, 2) } }`, 'unsafe sub');
163+
152164
t.equal(print(compile(` object "SimpleStore" { code { require(0, error"nick") require(1, error"john") } } `).results),
153165
`object \"SimpleStore\" { code {\nfunction require(arg, message) {\n if lt(arg, 1) {\n mstore(0, message)\n revert(0, 32)\n }\n}\n require(0, 0x01) require(1, 0x02) } }`, 'const');
154166

src/yulplus.ne

+21
Original file line numberDiff line numberDiff line change
@@ -768,6 +768,27 @@ Block -> "{" _ Statement (_ Statement):* _ "}" {% function(d, l) {
768768
v.toString = () => 'add';
769769
}
770770

771+
if (v.type === 'FunctionCallIdentifier'
772+
&& v.name === 'unsafeMul') {
773+
v.text = 'mul';
774+
v.value = 'mul';
775+
v.toString = () => 'mul';
776+
}
777+
778+
if (v.type === 'FunctionCallIdentifier'
779+
&& v.name === 'unsafeDiv') {
780+
v.text = 'div';
781+
v.value = 'div';
782+
v.toString = () => 'div';
783+
}
784+
785+
if (v.type === 'FunctionCallIdentifier'
786+
&& v.name === 'unsafeSub') {
787+
v.text = 'sub';
788+
v.value = 'sub';
789+
v.toString = () => 'sub';
790+
}
791+
771792
if (v.type === 'FunctionCallIdentifier'
772793
&& v.name === 'add'
773794
&& !v.noSafeMath) {

0 commit comments

Comments
 (0)