tealrb 0.9.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d027d915afa0ccb6383791a694d6ca747bd07c14a2803d6ecaa8119b3277ffe9
4
- data.tar.gz: e09162d147464ba6a7c0ada5c18bc9884832f164bb43f02a87d6d3f733093ce4
3
+ metadata.gz: 901c0ceb42462821200254c78055b4953f680c46507ede5f09d751e13194e8ae
4
+ data.tar.gz: 2e24af5fa78eb16bc19fe298c047ed712d3536183e533b614a4474a9af89712d
5
5
  SHA512:
6
- metadata.gz: e9b80748e7716e45b0bb87efcd0e70560bbb46fde5f6907ca6beaac59cd77ba4518acb41337df2fb5bb0aa6c9c8c86a6cfb28042ae95736028f4bcbdffc30c96
7
- data.tar.gz: 791cb92688f986e2807770797c4ba5f61cd20e675c2887169126eb34bbbc40196e9a52ac64ecc79a4a9338ddb37632d20b5e08828a3d5b7cce9a2aa122ee2c57
6
+ metadata.gz: b8886b2142000d91603f835032058982a50bc0fddaa81cd00e00957fb1b1c5c74ba87484deb7598a660183fa810193491cb0e7c14811b830c454befd6fd4c87b
7
+ data.tar.gz: b2e282ef718646af4413f6dad9a72ca70ba23d54d97108e5c34047ca5804eafecbcbe6ec822f9520b75ae18dc7fcbc57b60b33e0d4db93f5843bf580a37657f0
@@ -90,12 +90,18 @@ module TEALrb
90
90
  end
91
91
  end
92
92
 
93
+ VOID_OPS = %w[assert err return app_global_put b bnz bz store
94
+ stores app_local_put app_global_del app_local_del callsub retsub
95
+ log itxn_submit itxn_next].freeze
96
+
93
97
  def teal_source
94
98
  teal_lines = []
95
99
 
96
- @teal.each do |line|
100
+ @teal.each_with_index do |line, i|
97
101
  ln = line.strip
98
102
 
103
+ teal_lines << '' if i != 0 && VOID_OPS.include?(@teal[i - 1][/\S+/])
104
+
99
105
  if (ln[%r{\S+:($| //)}] && !ln[/^if\d+/]) || ln == 'b main' || ln[/^#/]
100
106
  teal_lines << ln
101
107
  elsif ln == 'retsub'
@@ -106,6 +112,10 @@ module TEALrb
106
112
  end
107
113
  end
108
114
 
115
+ teal_lines.delete_if.with_index do |t, i|
116
+ t.empty? && teal_lines[i - 1].empty?
117
+ end
118
+
109
119
  teal_lines.join("\n")
110
120
  end
111
121
 
@@ -69,6 +69,24 @@ module TEALrb
69
69
  insert_after(node.loc.name, '.call') unless ['@teal_methods', '@subroutines', '@scratch'].include? node.source
70
70
  super
71
71
  end
72
+
73
+ def on_gvasgn(node)
74
+ unless RuboCop::Cop::Style::GlobalVars::BUILT_IN_VARS.include? node.loc.name.source.to_sym
75
+ var_name = node.loc.name.source[1..]
76
+ replace(node.loc.name, "@scratch[:#{var_name}]")
77
+ end
78
+
79
+ super
80
+ end
81
+
82
+ def on_gvar(node)
83
+ unless RuboCop::Cop::Style::GlobalVars::BUILT_IN_VARS.include? node.loc.name.source.to_sym
84
+ var_name = node.loc.name.source[1..]
85
+ replace(node.loc.name, "@scratch[:#{var_name}]")
86
+ end
87
+
88
+ super
89
+ end
72
90
  end
73
91
 
74
92
  class ComparisonRewriter < Rewriter
@@ -5,21 +5,25 @@ module TEALrb
5
5
  def initialize
6
6
  @open_slots = (0..256).to_a
7
7
  @named_slots = {}
8
+ @values = {}
8
9
  end
9
10
 
10
11
  def [](key)
11
12
  TEAL.instance << "load #{@named_slots[key]} // #{key}"
13
+ @values[key]
12
14
  end
13
15
 
14
- def []=(key, _value)
15
- store(key)
16
+ def []=(key, value)
17
+ store(key, value)
16
18
  end
17
19
 
18
- def store(key)
20
+ def store(key, value = TEAL.instance)
21
+ @values[key] = value
19
22
  TEAL.instance << "store #{@named_slots[key] ||= @open_slots.shift} // #{key}"
20
23
  end
21
24
 
22
25
  def delete(key)
26
+ @values.delete(key)
23
27
  @open_slots << @named_slots.delete(key)
24
28
  end
25
29
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tealrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Polny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-07 00:00:00.000000000 Z
11
+ date: 2022-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: method_source