Support composed typed client fragments

ober

6cae9ff814dd34cee4e30a185f8e5a88dcca967c

diff --git a/Makefile b/Makefile
index 43121f2..1f35b02 100644
--- a/Makefile
+++ b/Makefile
@@ -55,6 +55,9 @@ test: clean generate
 	$(JERBOA) jandroid.ss generate tests/fixtures/typed-kotlin-app.ss build/typed-kotlin
 	test -f build/typed-kotlin/app/src/main/java/org/jerboa/typedfixture/CounterModel.kt # gitsafe:ignore
 	grep -q 'fun add_one(x: ULong): ULong' build/typed-kotlin/app/src/main/java/org/jerboa/typedfixture/CounterModel.kt # gitsafe:ignore
+	$(JERBOA) jandroid.ss generate tests/fixtures/fragment-app.ss build/fragment-fixture
+	test -f build/fragment-fixture/app/src/main/java/org/jerboa/fragmentfixture/FragmentValue.kt # gitsafe:ignore
+	grep -q 'fun fragmentValue(): String' build/fragment-fixture/app/src/main/java/org/jerboa/fragmentfixture/FragmentValue.kt # gitsafe:ignore
 	$(JERBOA) jandroid.ss generate $(ORIGINAL_TACTICS_EXAMPLE) $(ORIGINAL_TACTICS_BUILD_DIR)
 	test -f $(ORIGINAL_TACTICS_BUILD_DIR)/app/src/main/java/com/jerboa/originaltactics/ShipUiNames.kt
 	grep -q 'label.length <= maxChars' $(ORIGINAL_TACTICS_BUILD_DIR)/app/src/main/java/com/jerboa/originaltactics/ShipUiNames.kt
diff --git a/tests/fixtures/fragment-app.ss b/tests/fixtures/fragment-app.ss
new file mode 100644
index 0000000..bcf3230
--- /dev/null
+++ b/tests/fixtures/fragment-app.ss
@@ -0,0 +1,10 @@
+(import (jerboa prelude))
+
+(def app
+  '(android-app
+     (id "org.jerboa.fragmentfixture")
+     (name "Fragment Fixture")
+     (fragment "fragments/root.ss")
+     (screen Main
+       (column
+         (text "fragment fixture")))))
diff --git a/tests/fixtures/fragments/child.ss b/tests/fixtures/fragments/child.ss
new file mode 100644
index 0000000..b9f5938
--- /dev/null
+++ b/tests/fixtures/fragments/child.ss
@@ -0,0 +1,8 @@
+(import (jerboa prelude))
+
+(def fragment
+  '((typed-kotlin-file "org/jerboa/fragmentfixture/FragmentValue.kt"
+      (typed-library (org jerboa fragmentfixture)
+        (export fragmentValue)
+        (def (fragmentValue) : String
+          "typed fragment")))))
diff --git a/tests/fixtures/fragments/root.ss b/tests/fixtures/fragments/root.ss
new file mode 100644
index 0000000..d7517f0
--- /dev/null
+++ b/tests/fixtures/fragments/root.ss
@@ -0,0 +1,4 @@
+(import (jerboa prelude))
+
+(def fragment
+  '((include-fragment "child.ss")))