Skip to content

Commit 2f732e7

Browse files
committed
fix arrays
1 parent feb2e2a commit 2f732e7

File tree

5 files changed

+40
-6
lines changed

5 files changed

+40
-6
lines changed

source/backends/arm64.d

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -924,13 +924,18 @@ class BackendARM64 : CompilerBackend {
924924

925925
foreach (ref elem ; node.elements) {
926926
switch (elem.type) {
927+
case NodeType.SignedInt: {
928+
auto node2 = cast(SignedIntNode) elem;
929+
array.values ~= node2.value.text();
930+
break;
931+
}
927932
case NodeType.Integer: {
928933
auto node2 = cast(IntegerNode) elem;
929934
array.values ~= node2.value.text();
930935
break;
931936
}
932937
default: {
933-
Error(elem.error, "Type '%s' can't be used in array literal");
938+
Error(elem.error, "Type '%s' can't be used in array literal", elem.type);
934939
}
935940
}
936941
}

source/backends/lua.d

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,13 +635,18 @@ class BackendLua : CompilerBackend {
635635

636636
foreach (ref elem ; node.elements) {
637637
switch (elem.type) {
638+
case NodeType.SignedInt:{
639+
auto node2 = cast(SignedIntNode) elem;
640+
array.values ~= node2.value.text();
641+
break;
642+
}
638643
case NodeType.Integer: {
639644
auto node2 = cast(IntegerNode) elem;
640645
array.values ~= node2.value.text();
641646
break;
642647
}
643648
default: {
644-
Error(elem.error, "Type '%s' can't be used in array literal");
649+
Error(elem.error, "Type '%s' can't be used in array literal", elem.type);
645650
}
646651
}
647652
}

source/backends/rm86.d

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -734,13 +734,18 @@ class BackendRM86 : CompilerBackend {
734734

735735
foreach (ref elem ; node.elements) {
736736
switch (elem.type) {
737+
case NodeType.SignedInt:{
738+
auto node2 = cast(SignedIntNode) elem;
739+
array.values ~= node2.value.text();
740+
break;
741+
}
737742
case NodeType.Integer: {
738743
auto node2 = cast(IntegerNode) elem;
739744
array.values ~= node2.value.text();
740745
break;
741746
}
742747
default: {
743-
Error(elem.error, "Type '%s' can't be used in array literal");
748+
Error(elem.error, "Type '%s' can't be used in array literal", elem.type);
744749
}
745750
}
746751
}

source/backends/uxn.d

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -742,6 +742,21 @@ class BackendUXN : CompilerBackend {
742742

743743
foreach (ref elem ; node.elements) {
744744
switch (elem.type) {
745+
case NodeType.SignedInt:{
746+
auto node2 = cast(SignedIntNode) elem;
747+
748+
final switch (array.type.Size()) {
749+
case 1: {
750+
array.values ~= format("%.2x", cast(ubyte) (cast(byte) node2.value));
751+
break;
752+
}
753+
case 2: {
754+
array.values ~= format("%.4x", cast(ushort) (cast(short) node2.value));
755+
break;
756+
}
757+
}
758+
break;
759+
}
745760
case NodeType.Integer: {
746761
auto node2 = cast(IntegerNode) elem;
747762

@@ -753,8 +768,7 @@ class BackendUXN : CompilerBackend {
753768
break;
754769
}
755770
default: {
756-
Error(elem.error, "Type '%s' can't be used in array literal");
757-
// TODO: orphan format specifier
771+
Error(elem.error, "Type '%s' can't be used in array literal", elem.type);
758772
}
759773
}
760774
}

source/backends/x86_64.d

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1139,13 +1139,18 @@ class BackendX86_64 : CompilerBackend {
11391139

11401140
foreach (ref elem ; node.elements) {
11411141
switch (elem.type) {
1142+
case NodeType.SignedInt: {
1143+
auto node2 = cast(SignedIntNode) elem;
1144+
array.values ~= node2.value.text();
1145+
break;
1146+
}
11421147
case NodeType.Integer: {
11431148
auto node2 = cast(IntegerNode) elem;
11441149
array.values ~= node2.value.text();
11451150
break;
11461151
}
11471152
default: {
1148-
Error(elem.error, "Type '%s' can't be used in array literal");
1153+
Error(elem.error, "Type '%s' can't be used in array literal", elem.type);
11491154
}
11501155
}
11511156
}

0 commit comments

Comments
 (0)