sealed: add release-level and Jackson 3.2.3 transcripts

09 shows which language level each sealed feature needs; 10 runs the Payment model through Jackson 3 (jars fetched and sha1-checked, not committed).

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TF9JWFvJSNm6HVzswzZU5a
This commit is contained in:
Claude
2026-09-24 12:08:23 +00:00
parent ff6130bede
commit d2c1efc2c4
9 changed files with 193 additions and 0 deletions
+15
View File
@@ -56,4 +56,19 @@ mm() { local jdk="$1" o; o="$(mk)"
echo "\$ javac -d out \$(find multi/demo.pay -name '*.java') && java -p out -m demo.pay/pay.app.Main ($(t "$jdk"))"
"$jdk/bin/javac" -d "$o" $(find multi/demo.pay -name '*.java') 2>&1 && "$jdk/bin/java" -p "$o" -m demo.pay/pay.app.Main 2>&1; }
{ all3 mm; } > "$OUT/08-modules.txt"
# 09 - which language level each feature needs (sealed is final in 17; a switch over the sealed type needs 21)
rl() { local jdk="$1" rel="$2" src="$3" o; o="$(mk)"
echo "\$ javac --release $rel $src ($(t "$jdk"))"
"$jdk/bin/javac" --release "$rel" -d "$o" "$src" 2>&1 | grep -v '^Note:'; echo "exit=${PIPESTATUS[0]}"; }
{ rl "$JDK25" 16 src/ImplicitPermits.java; echo; rl "$JDK25" 17 src/ImplicitPermits.java; echo; rl "$JDK25" 17 src/PaymentDemo.java | head -6; } > "$OUT/09-release-levels.txt"
# 10 - Jackson 3.2.3: does a sealed type help JSON polymorphism? (needs jackson/fetch.sh first; jars are not committed)
jj() { local jdk="$1" src="$2" cls="$3" o cp; o="$(mk)"
cp="jackson/lib/jackson-databind-3.2.3.jar:jackson/lib/jackson-core-3.2.3.jar:jackson/lib/jackson-annotations-2.22.jar"
echo "\$ javac -cp jackson/lib/* $src && java $cls ($(t "$jdk"))"
"$jdk/bin/javac" -cp "$cp" -d "$o" "$src" 2>&1 && "$jdk/bin/java" -cp "$cp:$o" "$cls" 2>&1; }
if [ -f jackson/lib/jackson-databind-3.2.3.jar ]; then
{ all3 jj jackson/JsonPayment.java JsonPayment; echo; all3 jj jackson/JsonForgotten.java JsonForgotten; echo; all3 jj jackson/JsonNoSubTypes.java JsonNoSubTypes; } > "$OUT/10-jackson.txt"
else echo "skipped 10-jackson.txt: run jackson/fetch.sh first"; fi
echo done