summaryrefslogtreecommitdiff
path: root/chapter18/src/main/java
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-09-23 16:35:50 -0700
committerCliff Click <cliffc@acm.org>2026-09-23 16:35:50 -0700
commit0f32001b466def0cee753557ad6e296cf15e2504 (patch)
tree9e16038c574407bbd3f5c21f469c2df71e6835f8 /chapter18/src/main/java
parent695429df954b084d2226fe2a6c1a47e1861bcc01 (diff)
downloadSimple-0f32001b466def0cee753557ad6e296cf15e2504.tar.gz
Simple-0f32001b466def0cee753557ad6e296cf15e2504.zip
Keyboard shortcuts
Fast forward/reverse, pick-a-frame. Shorter type names.
Diffstat (limited to 'chapter18/src/main/java')
-rw-r--r--chapter18/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java5
-rw-r--r--chapter18/src/main/java/com/seaofnodes/simple/type/TypeMem.java4
-rw-r--r--chapter18/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java9
-rw-r--r--chapter18/src/main/java/com/seaofnodes/simple/type/TypeStruct.java14
4 files changed, 26 insertions, 6 deletions
diff --git a/chapter18/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java b/chapter18/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java
index cf92d3d7..61fc71cf 100644
--- a/chapter18/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java
+++ b/chapter18/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java
@@ -102,12 +102,15 @@ public class TypeFunPtr extends TypeNil {
return this;
}
- @Override public String str() { return print(new SB()).toString(); }
+ @Override public String str() { return print(new SB()).toString();
+ }
@Override public SB print(SB sb) { return _print(sb,false,true); }
public SB print(SB sb, boolean n) { return _print(sb,false,n); }
@Override public SB gprint(SB sb) { return _print(sb,true ,true); }
private static SB _print(SB sb, boolean g, Type t) { return g ? t.gprint(sb) : t.print(sb); }
private SB _print(SB sb, boolean g, boolean n) {
+ if( this==BOT ) return sb.p("FunBot");
+ if( _nil==0 && _sig==TypeTuple.TOP && _ret==Type.TOP && _fidxs==0 ) return sb.p("FunTop");
sb.p(x()).p("{ ");
if( n && _name!=null ) sb.p(_name);
else {
diff --git a/chapter18/src/main/java/com/seaofnodes/simple/type/TypeMem.java b/chapter18/src/main/java/com/seaofnodes/simple/type/TypeMem.java
index 9ed4c7a8..fe393a88 100644
--- a/chapter18/src/main/java/com/seaofnodes/simple/type/TypeMem.java
+++ b/chapter18/src/main/java/com/seaofnodes/simple/type/TypeMem.java
@@ -60,11 +60,15 @@ public class TypeMem extends Type {
}
@Override public SB print(SB sb) {
+ if( this==BOT ) return sb.p("MemBot");
+ if( this==TOP ) return sb.p("MemTop");
sb.p("#");
if( _alias==0 ) return sb.p(_t._type==TTOP ? "TOP" : "BOT");
return _t.print(sb.p(_alias).p(":"));
}
@Override public SB gprint(SB sb) {
+ if( this==BOT ) return sb.p("MemBot");
+ if( this==TOP ) return sb.p("MemTop");
sb.p("#");
if( _alias==0 ) return sb.p(_t._type==TTOP ? "TOP" : "BOT");
return _t.gprint(sb.p(_alias).p(":"));
diff --git a/chapter18/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java b/chapter18/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java
index 7e607838..9ea24b97 100644
--- a/chapter18/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java
+++ b/chapter18/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java
@@ -87,19 +87,22 @@ public class TypeMemPtr extends TypeNil {
}
@Override public String str() {
+ if( this==BOT ) return "PtrBot";
+ if( this==TOP ) return "PtrTop";
if( this== NOTBOT) return "*void";
- if( this== BOT) return "*void?";
return x()+"*"+_obj.str()+q();
}
@Override public SB print(SB sb) {
+ if( this==BOT ) return sb.p("PtrBot");
+ if( this==TOP ) return sb.p("PtrTop");
if( this== NOTBOT) return sb.p("*void");
- if( this== BOT) return sb.p("*void?");
return _obj.print(sb.p(x()).p("*")).p(q());
}
@Override public SB gprint(SB sb) {
+ if( this==BOT ) return sb.p("PtrBot");
+ if( this==TOP ) return sb.p("PtrTop");
if( this== NOTBOT) return sb.p("*void");
- if( this== BOT) return sb.p("*void?");
return _obj.gprint(sb.p(x()).p("*")).p(q());
}
}
diff --git a/chapter18/src/main/java/com/seaofnodes/simple/type/TypeStruct.java b/chapter18/src/main/java/com/seaofnodes/simple/type/TypeStruct.java
index ee206579..bc640955 100644
--- a/chapter18/src/main/java/com/seaofnodes/simple/type/TypeStruct.java
+++ b/chapter18/src/main/java/com/seaofnodes/simple/type/TypeStruct.java
@@ -181,6 +181,8 @@ public class TypeStruct extends Type {
@Override
public SB print(SB sb) {
+ if( this==BOT ) return sb.p("StructBot");
+ if( this==TOP ) return sb.p("StructTop");
sb.p(_name);
if( _fields == null ) return sb; // Forward reference struct, just print the name
sb.p(" {");
@@ -188,9 +190,17 @@ public class TypeStruct extends Type {
f._type.print(sb).p(f._final ? " " : " !").p(f._fname).p("; ");
return sb.p("}");
}
- @Override public SB gprint( SB sb ) { return sb.p(_name); }
+ @Override public SB gprint( SB sb ) {
+ if( this==BOT ) return sb.p("StructBot");
+ if( this==TOP ) return sb.p("StructTop");
+ return sb.p(_name);
+ }
- @Override public String str() { return _name; }
+ @Override public String str() {
+ if( this==BOT ) return "StructBot";
+ if( this==TOP ) return "StructTop";
+ return _name;
+ }
public boolean isAry() { return _fields.length==2 && _fields[1]._fname.equals("[]"); }