about summary refs log tree commit diff stats
path: root/apps/mu.subx
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-08-02 11:51:29 -0700
committerKartik Agaram <vc@akkartik.com>2020-08-02 11:51:29 -0700
commit1b79f705b9975a3293fd111c5dc129e887dc01c0 (patch)
treefbef915a5cc42fe113d8ecd334c8fcefb145e1db /apps/mu.subx
parent7d33cce06956614cf4a4a01f4a362dc097eea647 (diff)
downloadmu-1b79f705b9975a3293fd111c5dc129e887dc01c0.tar.gz
6702
Diffstat (limited to 'apps/mu.subx')
-rw-r--r--apps/mu.subx21
1 files changed, 18 insertions, 3 deletions
diff --git a/apps/mu.subx b/apps/mu.subx
index 76e61243..cb2d6d71 100644
--- a/apps/mu.subx
+++ b/apps/mu.subx
@@ -10887,18 +10887,24 @@ $populate-mu-type:parse-element:
       (is-mu-array-type? %eax)  # => eax
       3d/compare-eax-and 0/imm32/false
       0f 85/jump-if-!= $populate-mu-type:error3/disp32
+      # if v is a byte, abort
+      (lookup *esi *(esi+4))  # => eax
+      (lookup *(eax+8) *(eax+0xc))  # Var-type Var-type => eax
+      (is-simple-mu-type? %eax 8)  # byte => eax
+      3d/compare-eax-and 0/imm32/false
+      0f 85/jump-if-!= $populate-mu-type:error4/disp32
       # if v is a slice, abort
       (lookup *esi *(esi+4))  # => eax
       (lookup *(eax+8) *(eax+0xc))  # Var-type Var-type => eax
       (is-simple-mu-type? %eax 0xc)  # slice => eax
       3d/compare-eax-and 0/imm32/false
-      0f 85/jump-if-!= $populate-mu-type:error4/disp32
+      0f 85/jump-if-!= $populate-mu-type:error5/disp32
       # if v is a stream, abort  (we could support it, but initialization gets even more complex)
       (lookup *esi *(esi+4))  # => eax
       (lookup *(eax+8) *(eax+0xc))  # Var-type Var-type => eax
       (is-mu-stream-type? %eax)  # => eax
       3d/compare-eax-and 0/imm32/false
-      0f 85/jump-if-!= $populate-mu-type:error5/disp32
+      0f 85/jump-if-!= $populate-mu-type:error6/disp32
       # var tmp/ecx
       51/push-ecx
 $populate-mu-type:create-typeinfo-fields:
@@ -10988,7 +10994,7 @@ $populate-mu-type:error4:
     (write-buffered *(ebp+0x10) "type ")
     (type-name *edi)  # Typeinfo-id => eax
     (write-buffered *(ebp+0x10) %eax)
-    (write-buffered *(ebp+0x10) ": 'slice' elements not allowed\n")
+    (write-buffered *(ebp+0x10) ": 'byte' elements not allowed\n")
     (flush *(ebp+0x10))
     (stop *(ebp+0x14) 1)
     # never gets here
@@ -10997,6 +11003,15 @@ $populate-mu-type:error5:
     (write-buffered *(ebp+0x10) "type ")
     (type-name *edi)  # Typeinfo-id => eax
     (write-buffered *(ebp+0x10) %eax)
+    (write-buffered *(ebp+0x10) ": 'slice' elements not allowed\n")
+    (flush *(ebp+0x10))
+    (stop *(ebp+0x14) 1)
+    # never gets here
+
+$populate-mu-type:error6:
+    (write-buffered *(ebp+0x10) "type ")
+    (type-name *edi)  # Typeinfo-id => eax
+    (write-buffered *(ebp+0x10) %eax)
     (write-buffered *(ebp+0x10) ": 'stream' elements not allowed for now\n")
     (flush *(ebp+0x10))
     (stop *(ebp+0x14) 1)