Skip to content

Commit 6fdc91d

Browse files
committed
Restore comments and commented lines from efc7831
1 parent b6ae45a commit 6fdc91d

File tree

1 file changed

+57
-10
lines changed

1 file changed

+57
-10
lines changed

src/tck/java/org/truffleruby/tck/RubyTCKLanguageProvider.java

Lines changed: 57 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,20 @@ public Value createIdentityFunction(Context context) {
7070
@Override
7171
public Collection<? extends Snippet> createValueConstructors(Context context) {
7272
final List<Snippet> vals = new ArrayList<>();
73-
vals.add(createValueConstructor(context, "nil", NULL));
73+
// Interop Primitives
74+
vals.add(createValueConstructor(context, "nil", NULL)); // should also be OBJECT?
7475
vals.add(createValueConstructor(context, "false", BOOLEAN));
75-
vals.add(createValueConstructor(context, "7", NUMBER));
76-
vals.add(createValueConstructor(context, "1 << 42", NUMBER));
76+
// NOTE: NUMBER is only for primitives and types which are instanceof java.lang.Number.
77+
vals.add(createValueConstructor(context, "7", NUMBER)); // int
78+
vals.add(createValueConstructor(context, "1 << 42", NUMBER)); // long
79+
// vals.add(createValueConstructor(context, "1 << 84", NUMBER)); // Bignum
7780
vals.add(createValueConstructor(context, "3.14", NUMBER));
78-
vals.add(createValueConstructor(context, "Rational(1, 3)", OBJECT));
79-
vals.add(createValueConstructor(context, "Complex(1, 2)", OBJECT));
8081
vals.add(createValueConstructor(context, "'test'", STRING));
8182
vals.add(createValueConstructor(context, "'0123456789' + '0123456789'", STRING));
8283

84+
// Everything but interop primitives have members in Ruby, so they are also OBJECT
85+
vals.add(createValueConstructor(context, "Rational(1, 3)", OBJECT));
86+
vals.add(createValueConstructor(context, "Complex(1, 2)", OBJECT));
8387
vals.add(createValueConstructor(context, "Time.now", DATE_TIME_ZONE_OBJECT));
8488
vals.add(createValueConstructor(context, "[1, 2]", NUMBER_ARRAY_OBJECT));
8589
vals.add(createValueConstructor(context, "[1.2, 3.4]", NUMBER_ARRAY_OBJECT));
@@ -90,23 +94,58 @@ public Collection<? extends Snippet> createValueConstructors(Context context) {
9094
vals.add(createValueConstructor(context, "[Object.new, 65]", ARRAY_OBJECT));
9195
vals.add(createValueConstructor(context, "{ name: 'test' }", OBJECT));
9296
vals.add(createValueConstructor(context, "Struct.new(:foo, :bar).new(1, 'two')", OBJECT));
93-
vals.add(
94-
createValueConstructor(
95-
context,
96-
"Object.new.tap { |obj| obj.instance_variable_set(:@name, 'test') }",
97-
OBJECT));
97+
String objectWithIVar = "Object.new.tap { |obj| obj.instance_variable_set(:@name, 'test') }";
98+
vals.add(createValueConstructor(context, objectWithIVar, OBJECT));
9899
vals.add(createValueConstructor(context, "proc { }", intersection(OBJECT, executable(ANY, true))));
99100
vals.add(createValueConstructor(context, "lambda { }", intersection(OBJECT, executable(ANY, false))));
101+
// vals.add(createValueConstructor(context, ":itself.to_proc", alsoRegularObject(executable(ANY, false, ANY))));
102+
// vals.add(createValueConstructor(context, "1.method(:itself)", alsoRegularObject(executable(NUMBER, false))));
100103
return Collections.unmodifiableList(vals);
101104
}
102105

103106
@Override
104107
public Collection<? extends Snippet> createExpressions(Context context) {
105108
final List<Snippet> ops = new ArrayList<>();
109+
110+
// arithmetic
106111
ops.add(createBinaryOperator(context, "a + b", NUMBER, NUMBER, NUMBER));
107112
ops.add(createBinaryOperator(context, "a + b", STRING, STRING, STRING));
113+
// ops.add(createBinaryOperator(context, "a + b", ARRAY, ARRAY, ARRAY));
108114
ops.add(createBinaryOperator(context, "a - b", NUMBER, NUMBER, NUMBER));
115+
// ops.add(createBinaryOperator(context, "a - b", ARRAY, ARRAY, ARRAY));
116+
// ops.add(createBinaryOperator(context, "a * b", NUMBER, NUMBER, NUMBER));
117+
// ops.add(createBinaryOperator(context, "a * b", STRING, NUMBER, STRING));
118+
// ops.add(createBinaryOperator(context, "a * b", ARRAY, NUMBER, ARRAY));
109119
ops.add(createBinaryOperator(context, "a / b", NUMBER, NUMBER, NUMBER));
120+
// ops.add(createBinaryOperator(context, "a % b", NUMBER, NUMBER, NUMBER));
121+
// ops.add(createBinaryOperator(context, "a ** b", NUMBER, NUMBER, NUMBER));
122+
123+
// comparison
124+
// ops.add(createBinaryOperator(context, "a.equal?(b)", ANY, ANY, BOOLEAN));
125+
// ops.add(createBinaryOperator(context, "a == b", ANY, ANY, BOOLEAN));
126+
// ops.add(createBinaryOperator(context, "a != b", ANY, ANY, BOOLEAN));
127+
// ops.add(createBinaryOperator(context, "a < b", NUMBER, NUMBER, BOOLEAN));
128+
// ops.add(createBinaryOperator(context, "a > b", NUMBER, NUMBER, BOOLEAN));
129+
// ops.add(createBinaryOperator(context, "a <= b", NUMBER, NUMBER, BOOLEAN));
130+
// ops.add(createBinaryOperator(context, "a >= b", NUMBER, NUMBER, BOOLEAN));
131+
132+
// bitwise
133+
// ops.add(createBinaryOperator(context, "a << b", NUMBER, NUMBER, NUMBER));
134+
// ops.add(createBinaryOperator(context, "a >> b", NUMBER, NUMBER, NUMBER));
135+
// ops.add(createBinaryOperator(context, "a & b", NUMBER, NUMBER, NUMBER));
136+
// ops.add(createBinaryOperator(context, "a | b", NUMBER, NUMBER, NUMBER));
137+
// ops.add(createBinaryOperator(context, "a ^ b", NUMBER, NUMBER, NUMBER));
138+
139+
// logical
140+
// ops.add(createBinaryOperator(context, "a && b", ANY, ANY, ANY));
141+
// ops.add(createBinaryOperator(context, "a || b", ANY, ANY, ANY));
142+
143+
// unary operators
144+
// ops.add(createUnaryOperator(context, "+a", NUMBER, NUMBER));
145+
// ops.add(createUnaryOperator(context, "-a", NUMBER, NUMBER));
146+
// ops.add(createUnaryOperator(context, "~a", NUMBER, NUMBER));
147+
// ops.add(createUnaryOperator(context, "!a", ANY, BOOLEAN));
148+
110149
return Collections.unmodifiableList(ops);
111150
}
112151

@@ -121,7 +160,9 @@ public Collection<? extends Snippet> createStatements(Context context) {
121160
res.add(createStatement(context, "until", "-> c { until c; break; end }", ANY, NULL));
122161
res.add(createStatement(context, "do while", "-> c { begin; break; end while c }", ANY, NULL));
123162
res.add(createStatement(context, "do until", "-> c { begin; break; end until c }", ANY, NULL));
163+
// res.add(createStatement(context, "for", "-> array { for e in array do; end }", ARRAY, ARRAY));
124164
res.add(createStatement(context, "case", "-> e { case e; when Integer; 1; else 2; end }", ANY, NUMBER));
165+
// res.add(createStatement(context, "raise", "-> msg { begin; raise msg; rescue => e; e; end}", STRING, OBJECT));
125166
return Collections.unmodifiableList(res);
126167
}
127168

@@ -197,6 +238,12 @@ private Snippet createValueConstructor(Context context, String value, TypeDescri
197238
return Snippet.newBuilder(value, context.eval(getId(), String.format("-> { %s }", value)), type).build();
198239
}
199240

241+
// private Snippet createUnaryOperator(Context context, String operator, TypeDescriptor operandType,
242+
// TypeDescriptor returnType) {
243+
// final Value function = context.eval(getId(), String.format("-> a { %s }", operator));
244+
// return Snippet.newBuilder(operator, function, returnType).parameterTypes(operandType).build();
245+
// }
246+
200247
private Snippet createBinaryOperator(Context context, String operator, TypeDescriptor lhsType,
201248
TypeDescriptor rhsType, TypeDescriptor returnType) {
202249
final Value function = context.eval(getId(), String.format("-> a, b { %s }", operator));

0 commit comments

Comments
 (0)