(self, root, token)
| 220 | self.rootStack = [] |
| 221 | |
| 222 | def parseInitializer(self, root, token): |
| 223 | self.root = root |
| 224 | self.token = token |
| 225 | dummyRoot = ElementDef('array', '->', self.root.valueType) |
| 226 | dummyRoot.children = [self.root] |
| 227 | |
| 228 | self.rootStack = [] |
| 229 | self.root = dummyRoot |
| 230 | self.ed = self.root.getFirstValueElement() |
| 231 | isFirstElement = False |
| 232 | isDesignated = False |
| 233 | |
| 234 | while self.token: |
| 235 | if self.token.str == ',': |
| 236 | self.token = self.token.astOperand1 |
| 237 | isFirstElement = False |
| 238 | |
| 239 | # Designated initializer ( [2]=... or .name=... ) |
| 240 | elif self.token.isAssignmentOp and not self.token.valueType: |
| 241 | self.popFromStackIfExitElement() |
| 242 | |
| 243 | self.ed = getElementByDesignator(self.root, self.token.astOperand1) |
| 244 | if self.ed: |
| 245 | # Update root |
| 246 | self.pushToRootStackAndMarkAsDesignated() |
| 247 | # Make sure ed points to valueElement |
| 248 | self.ed = self.ed.getFirstValueElement() |
| 249 | |
| 250 | self.token = self.token.astOperand2 |
| 251 | isFirstElement = False |
| 252 | isDesignated = True |
| 253 | |
| 254 | elif self.token.isString and self.ed and self.ed.isArray: |
| 255 | self.ed.setInitialized(isDesignated) |
| 256 | if self.token == self.token.astParent.astOperand1 and self.token.astParent.astOperand2: |
| 257 | self.token = self.token.astParent.astOperand2 |
| 258 | self.ed.markAsCurrent() |
| 259 | self.ed = self.root.getNextChild() |
| 260 | else: |
| 261 | self.unwindAndContinue() |
| 262 | continue |
| 263 | |
| 264 | elif self.token.str == '{': |
| 265 | nextChild = self.root.getNextChild() if self.root is not None else None |
| 266 | |
| 267 | if nextChild: |
| 268 | if nextChild.isArray or nextChild.isRecord: |
| 269 | nextChild.unset() |
| 270 | nextChild.setInitialized(isDesignated) |
| 271 | self.ed = nextChild.getFirstValueElement() |
| 272 | isDesignated = False |
| 273 | elif nextChild.valueType is None: |
| 274 | # No type information available - unable to check structure - assume correct initialization |
| 275 | nextChild.setInitialized(isDesignated) |
| 276 | self.unwindAndContinue() |
| 277 | continue |
| 278 | |
| 279 | elif self.token.astOperand1: |
no test coverage detected