|
Lines 111-116
Link Here
|
| 111 |
import org.eclipse.cdt.core.parser.util.CharArrayUtils; |
111 |
import org.eclipse.cdt.core.parser.util.CharArrayUtils; |
| 112 |
import org.eclipse.cdt.internal.core.dom.parser.ASTInternal; |
112 |
import org.eclipse.cdt.internal.core.dom.parser.ASTInternal; |
| 113 |
import org.eclipse.cdt.internal.core.dom.parser.ASTNode; |
113 |
import org.eclipse.cdt.internal.core.dom.parser.ASTNode; |
|
|
114 |
import org.eclipse.cdt.internal.core.dom.parser.ASTQueries; |
| 114 |
import org.eclipse.cdt.internal.core.dom.parser.AbstractGNUSourceCodeParser; |
115 |
import org.eclipse.cdt.internal.core.dom.parser.AbstractGNUSourceCodeParser; |
| 115 |
import org.eclipse.cdt.internal.core.dom.parser.BacktrackException; |
116 |
import org.eclipse.cdt.internal.core.dom.parser.BacktrackException; |
| 116 |
import org.eclipse.cdt.internal.core.dom.parser.DeclarationOptions; |
117 |
import org.eclipse.cdt.internal.core.dom.parser.DeclarationOptions; |
|
Lines 189-209
Link Here
|
| 189 |
|
190 |
|
| 190 |
IASTInitializer initializer = cInitializerClause(newDesignators, true); |
191 |
IASTInitializer initializer = cInitializerClause(newDesignators, true); |
| 191 |
|
192 |
|
| 192 |
if (newDesignators.isEmpty()) { |
193 |
// depending on value of skipTrivialItemsInCompoundInitializers initializer may be null |
| 193 |
// depending on value of skipTrivialItemsInCompoundInitializers initializer may be null |
194 |
if (initializer != null) { |
| 194 |
if (initializer != null) |
195 |
if (newDesignators.isEmpty()) { |
| 195 |
result.addInitializer(initializer); |
196 |
result.addInitializer(initializer); |
| 196 |
} else { |
197 |
} else { |
| 197 |
ICASTDesignatedInitializer desigInitializer = createDesignatorInitializer(); |
198 |
ICASTDesignatedInitializer desigInitializer = createDesignatorInitializer(); |
| 198 |
((ASTNode) desigInitializer).setOffsetAndLength( |
199 |
((ASTNode) desigInitializer).setOffsetAndLength( |
| 199 |
((ASTNode) newDesignators.get(0)).getOffset(), |
200 |
((ASTNode) newDesignators.get(0)).getOffset(), |
| 200 |
((ASTNode)initializer).getOffset() + ((ASTNode)initializer).getLength() - ((ASTNode) newDesignators.get(0)).getOffset()); |
201 |
((ASTNode)initializer).getOffset() + ((ASTNode)initializer).getLength() - ((ASTNode) newDesignators.get(0)).getOffset()); |
| 201 |
for (int i = 0; i < newDesignators.size(); ++i) { |
202 |
for (int i = 0; i < newDesignators.size(); ++i) { |
| 202 |
ICASTDesignator d = (ICASTDesignator) newDesignators.get(i); |
203 |
ICASTDesignator d = (ICASTDesignator) newDesignators.get(i); |
| 203 |
desigInitializer.addDesignator(d); |
204 |
desigInitializer.addDesignator(d); |
| 204 |
} |
205 |
} |
| 205 |
desigInitializer.setOperandInitializer(initializer); |
206 |
desigInitializer.setOperandInitializer(initializer); |
| 206 |
result.addInitializer(desigInitializer); |
207 |
result.addInitializer(desigInitializer); |
|
|
208 |
} |
| 207 |
} |
209 |
} |
| 208 |
// can end with ", }" or "}" |
210 |
// can end with ", }" or "}" |
| 209 |
if (LT(1) == IToken.tCOMMA) |
211 |
if (LT(1) == IToken.tCOMMA) |
|
Lines 232-238
Link Here
|
| 232 |
// assignmentExpression |
234 |
// assignmentExpression |
| 233 |
IASTExpression assignmentExpression = assignmentExpression(); |
235 |
IASTExpression assignmentExpression = assignmentExpression(); |
| 234 |
if (inAggregateInitializer && skipTrivialExpressionsInAggregateInitializers) { |
236 |
if (inAggregateInitializer && skipTrivialExpressionsInAggregateInitializers) { |
| 235 |
if (!NAME_CHECKER.containsName(assignmentExpression)) |
237 |
if (!ASTQueries.canContainName(assignmentExpression)) |
| 236 |
return null; |
238 |
return null; |
| 237 |
} |
239 |
} |
| 238 |
IASTInitializerExpression result = createInitializerExpression(); |
240 |
IASTInitializerExpression result = createInitializerExpression(); |