mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-03-03 13:29:56 +00:00
Implemented C99 compatible union initializer method, using .member= syntax...
(cherry picked from commit ef62f80b2b693aa92bcbdfb873bad5f995b4b6ff)
This commit is contained in:
parent
51623c3657
commit
9db2d9b960
@ -169,14 +169,21 @@ public class Initializers {
|
||||
for(int i = 0; i < structInitNeedSize; i++) {
|
||||
Variable memberDef = null;
|
||||
RValue memberValue = valueIt.next();
|
||||
String memberUnion = ((ValueStructList)valueList).getMember(memberValue);
|
||||
if(memberUnion != null) {
|
||||
String memberUnionName = ((ValueStructList)valueList).getMember(memberValue);
|
||||
if(memberUnionName != null) {
|
||||
boolean found = false;
|
||||
while (memberDefIt.hasNext()) {
|
||||
memberDef = memberDefIt.next();
|
||||
if (memberDef.getLocalName().contentEquals(memberUnion.toString())) {
|
||||
if (memberDef.getLocalName().contentEquals(memberUnionName)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!found)
|
||||
throw new CompileError(
|
||||
"Union initializer cannot find member field " + memberUnionName + "\n" +
|
||||
" Union initializer: " + valueList.toString(program),
|
||||
source);
|
||||
} else {
|
||||
memberDef = memberDefIt.next();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user