From 4ee317f2e8a4b855966500500356b5997e07d923 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Wed, 21 Aug 2019 22:30:21 -0400 Subject: Factored-out the different categories of JVM types. --- stdlib/source/lux/target/jvm/type.lux | 47 +++++---------------- stdlib/source/lux/target/jvm/type/category.lux | 32 ++++++++++++++ stdlib/source/lux/target/jvm/type/descriptor.lux | 54 ++++++++++-------------- stdlib/source/lux/target/jvm/type/reflection.lux | 46 +++++++++----------- stdlib/source/lux/target/jvm/type/signature.lux | 29 +------------ 5 files changed, 84 insertions(+), 124 deletions(-) create mode 100644 stdlib/source/lux/target/jvm/type/category.lux (limited to 'stdlib') diff --git a/stdlib/source/lux/target/jvm/type.lux b/stdlib/source/lux/target/jvm/type.lux index 4a2260aef..e28e9633a 100644 --- a/stdlib/source/lux/target/jvm/type.lux +++ b/stdlib/source/lux/target/jvm/type.lux @@ -19,41 +19,16 @@ [encoding ["#." name (#+ External)]]] ["." / #_ + [category (#+ Void Value Return Method Primitive Object Class Array Parameter)] ["#." signature (#+ Signature)] ["#." descriptor (#+ Descriptor)] ["#." reflection (#+ Reflection)]]) -(abstract: #export Void' {} Any) -(abstract: #export (Value' kind) {} Any) -(abstract: #export (Return' kind) {} Any) -(abstract: #export Method {} Any) - (abstract: #export (Type brand) {} [(Signature Any) (Descriptor Any) (Reflection Any)] - (type: #export Return (<| Return' Any)) - (type: #export Value (<| Return' Value' Any)) - (type: #export Void (<| Return' Void')) - - (abstract: #export (Object' brand) {} Any) - (type: #export Object (<| Return' Value' Object' Any)) - - (abstract: #export (Parameter' brand) {} Any) - (type: #export Parameter (<| Return' Value' Object' Parameter' Any)) - - (template [ ] - [(with-expansions [ (template.identifier [ "'"])] - (abstract: #export {} Any) - (type: #export - (`` (<| Return' Value' (~~ (template.splice )) ))))] - - [[] Primitive] - [[Object' Parameter'] Class] - [[Object'] Array] - ) - (template [