Skip to content

Commit eda2127

Browse files
committed
free: fix TODOs
1 parent fc0f4ae commit eda2127

File tree

6 files changed

+20
-38
lines changed

6 files changed

+20
-38
lines changed

jit-compiler/src/main/java/org/aya/compiler/free/FreeExprBuilder.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2020-2024 Tesla (Yinsen) Zhang.
1+
// Copyright (c) 2020-2025 Tesla (Yinsen) Zhang.
22
// Use of this source code is governed by the MIT license that can be found in the LICENSE.md file.
33
package org.aya.compiler.free;
44

@@ -38,7 +38,6 @@ public interface FreeExprBuilder {
3838
return mkNew(conRef, args);
3939
}
4040

41-
// TODO: inline this
4241
default @NotNull FreeJavaExpr refVar(@NotNull LocalVariable name) {
4342
return name.ref();
4443
}

jit-compiler/src/main/java/org/aya/compiler/free/FreeJavaResolver.java

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
// Copyright (c) 2020-2024 Tesla (Yinsen) Zhang.
1+
// Copyright (c) 2020-2025 Tesla (Yinsen) Zhang.
22
// Use of this source code is governed by the MIT license that can be found in the LICENSE.md file.
33
package org.aya.compiler.free;
44

55
import kala.collection.immutable.ImmutableSeq;
6-
import org.aya.compiler.free.data.MethodRef;
76
import org.aya.compiler.free.data.FieldRef;
7+
import org.aya.compiler.free.data.MethodRef;
88
import org.aya.util.error.Panic;
99
import org.jetbrains.annotations.NotNull;
1010

@@ -34,10 +34,7 @@ public final class FreeJavaResolver {
3434
return new FieldRef(owner, returnType, name);
3535
}
3636

37-
public static @NotNull FieldRef resolve(
38-
@NotNull Class<?> owner,
39-
@NotNull String name
40-
) {
37+
public static @NotNull FieldRef resolve(@NotNull Class<?> owner, @NotNull String name) {
4138
try {
4239
var field = owner.getField(name);
4340
return resolve(FreeUtil.fromClass(owner), name, FreeUtil.fromClass(field.getType()));

jit-compiler/src/main/java/org/aya/compiler/free/morphism/free/FreeCodeBuilderImpl.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,7 @@ public void switchCase(
149149
stmts.append(new FreeStmt.Switch(assertFreeVariable(elim), cases, branchBodies, defaultBody));
150150
}
151151

152-
@Override
153-
public void returnWith(@NotNull FreeJavaExpr expr) {
152+
@Override public void returnWith(@NotNull FreeJavaExpr expr) {
154153
stmts.append(new FreeStmt.Return(assertFreeExpr(expr)));
155154
}
156155

@@ -159,8 +158,7 @@ public void returnWith(@NotNull FreeJavaExpr expr) {
159158
return FreeExprBuilderImpl.INSTANCE.mkNew(conRef, args);
160159
}
161160

162-
@Override
163-
public @NotNull FreeJavaExpr refVar(@NotNull LocalVariable name) {
161+
@Override public @NotNull FreeJavaExpr refVar(@NotNull LocalVariable name) {
164162
return FreeExprBuilderImpl.INSTANCE.refVar(name);
165163
}
166164

jit-compiler/src/main/java/org/aya/compiler/free/morphism/source/SourceCodeBuilder.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
// Copyright (c) 2020-2024 Tesla (Yinsen) Zhang.
1+
// Copyright (c) 2020-2025 Tesla (Yinsen) Zhang.
22
// Use of this source code is governed by the MIT license that can be found in the LICENSE.md file.
33
package org.aya.compiler.free.morphism.source;
44

55
import kala.collection.immutable.ImmutableSeq;
66
import kala.collection.immutable.primitive.ImmutableIntSeq;
77
import org.aya.compiler.SourceBuilder;
8-
import org.aya.compiler.free.*;
8+
import org.aya.compiler.free.ArgumentProvider;
9+
import org.aya.compiler.free.FreeCodeBuilder;
10+
import org.aya.compiler.free.FreeJavaExpr;
11+
import org.aya.compiler.free.FreeUtil;
912
import org.aya.compiler.free.data.FieldRef;
1013
import org.aya.compiler.free.data.LocalVariable;
1114
import org.aya.compiler.free.data.MethodRef;
@@ -234,10 +237,6 @@ private void buildIf(
234237
return mkNew(FreeUtil.fromClass(className), args);
235238
}
236239

237-
@Override public @NotNull FreeJavaExpr refVar(@NotNull LocalVariable name) {
238-
return name.ref();
239-
}
240-
241240
@Override
242241
public @NotNull SourceFreeJavaExpr.Cont invoke(@NotNull MethodRef method, @NotNull FreeJavaExpr owner, @NotNull ImmutableSeq<FreeJavaExpr> args) {
243242
return () -> {

jit-compiler/src/main/java/org/aya/compiler/serializers/PatternSerializer.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2020-2024 Tesla (Yinsen) Zhang.
1+
// Copyright (c) 2020-2025 Tesla (Yinsen) Zhang.
22
// Use of this source code is governed by the MIT license that can be found in the LICENSE.md file.
33
package org.aya.compiler.serializers;
44

@@ -96,7 +96,6 @@ private void doSerialize(
9696
onMatchSucc.accept(builder);
9797
}
9898

99-
// TODO: match IntegerTerm / ListTerm first
10099
case Pat.Con con -> builder.ifInstanceOf(term, FreeUtil.fromClass(ConCallLike.class),
101100
(builder1, conTerm) -> builder1.ifRefEqual(
102101
AbstractExprializer.getRef(builder1, CallKind.Con, conTerm.ref()),

jit-compiler/src/main/java/org/aya/compiler/serializers/TermExprializer.java

+8-18
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2020-2024 Tesla (Yinsen) Zhang.
1+
// Copyright (c) 2020-2025 Tesla (Yinsen) Zhang.
22
// Use of this source code is governed by the MIT license that can be found in the LICENSE.md file.
33
package org.aya.compiler.serializers;
44

@@ -7,6 +7,7 @@
77
import kala.tuple.Tuple;
88
import kala.tuple.Tuple2;
99
import org.aya.compiler.free.*;
10+
import org.aya.compiler.free.data.FieldRef;
1011
import org.aya.compiler.free.data.MethodRef;
1112
import org.aya.compiler.serializers.ModuleSerializer.MatchyRecorder;
1213
import org.aya.generic.stmt.Shaped;
@@ -25,22 +26,19 @@
2526

2627
import java.lang.constant.ClassDesc;
2728
import java.util.function.BiFunction;
28-
import java.util.function.Function;
2929
import java.util.function.Supplier;
3030

3131
/**
3232
* Build the "constructor form" of {@link Term}, but in Java.
3333
*/
3434
public final class TermExprializer extends AbstractExprializer<Term> {
35-
/**
36-
* Terms that should be instantiated
37-
*/
35+
public static final @NotNull FieldRef TYPE0_FIELD = FreeJavaResolver.resolve(SortTerm.class, "Type0");
36+
public static final @NotNull FieldRef ISET_FIELD = FreeJavaResolver.resolve(SortTerm.class, "ISet");
37+
/// Terms that should be instantiated
3838
private final @NotNull ImmutableSeq<FreeJavaExpr> instantiates;
3939
private final @NotNull MutableLinkedHashMap<LocalVar, FreeJavaExpr> binds;
4040

41-
/**
42-
* Whether allow LocalTerm, false in default (in order to report unexpected LocalTerm)
43-
*/
41+
/// Whether allow {@link LocalTerm}, false in default (in order to report unexpected LocalTerm)
4442
private final boolean allowLocalTerm;
4543
private final @NotNull MatchyRecorder recorder;
4644

@@ -188,11 +186,8 @@ case FnCall(var ref, var ulift, var args) -> buildFnInvoke(
188186
));
189187
yield builder.invoke(Constants.RULEREDUCER_MAKE, onStuck, ImmutableSeq.empty());
190188
}
191-
// TODO: make the resolving const
192-
case SortTerm sort when sort.equals(SortTerm.Type0) ->
193-
builder.refField(FreeJavaResolver.resolve(SortTerm.class, "Type0"));
194-
case SortTerm sort when sort.equals(SortTerm.ISet) ->
195-
builder.refField(FreeJavaResolver.resolve(SortTerm.class, "ISet"));
189+
case SortTerm sort when sort.equals(SortTerm.Type0) -> builder.refField(TYPE0_FIELD);
190+
case SortTerm sort when sort.equals(SortTerm.ISet) -> builder.refField(ISET_FIELD);
196191
case SortTerm(var kind, var ulift) ->
197192
builder.mkNew(SortTerm.class, ImmutableSeq.of(builder.refEnum(kind), builder.iconst(ulift)));
198193
case DepTypeTerm(var kind, var param, var body) -> builder.mkNew(DepTypeTerm.class, ImmutableSeq.of(
@@ -271,11 +266,6 @@ yield buildMatchyInvoke(NameSerializer.getClassDesc(ref),
271266
});
272267
}
273268

274-
// TODO: unify with makeClosure
275-
private @NotNull FreeJavaExpr makeThunk(@NotNull Function<TermExprializer, FreeJavaExpr> cont) {
276-
return makeLambda(Constants.THUNK, (_, te) -> cont.apply(te));
277-
}
278-
279269
private @NotNull FreeJavaExpr makeClosure(@NotNull BiFunction<TermExprializer, FreeJavaExpr, FreeJavaExpr> cont) {
280270
return makeLambda(Constants.CLOSURE, (ap, te) -> cont.apply(te, ap.arg(0).ref()));
281271
}

0 commit comments

Comments
 (0)