comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java @ 8644:586b5e117c44

Fixed NodeParser error synchronization was done too late.
author Christian Humer <christian.humer@gmail.com>
date Fri, 05 Apr 2013 11:03:21 +0200
parents 8a1115c92271
children 5eeade940236
comparison
equal deleted inserted replaced
8643:3d2c2b68fe93 8644:586b5e117c44
150 nodeType = type; 150 nodeType = type;
151 } 151 }
152 152
153 NodeData nodeData = parseNodeData(type, nodeType); 153 NodeData nodeData = parseNodeData(type, nodeType);
154 154
155 if (nodeData.hasErrors()) {
156 return nodeData; // error sync point
157 }
158
155 if (Utils.typeEquals(nodeType.asType(), type.asType())) { 159 if (Utils.typeEquals(nodeType.asType(), type.asType())) {
156 // filter fields if they were not split. (field are accessible anyway) 160 // filter fields if they were not split. (field are accessible anyway)
157 for (ListIterator<NodeFieldData> iterator = nodeData.getFields().listIterator(); iterator.hasNext();) { 161 for (ListIterator<NodeFieldData> iterator = nodeData.getFields().listIterator(); iterator.hasNext();) {
158 NodeFieldData field = iterator.next(); 162 NodeFieldData field = iterator.next();
159 if (field.getKind() == FieldKind.FIELD) { 163 if (field.getKind() == FieldKind.FIELD) {
160 iterator.remove(); 164 iterator.remove();
161 } 165 }
162 } 166 }
163 }
164
165 if (nodeData.hasErrors()) {
166 return nodeData; // error sync point
167 } 167 }
168 168
169 List<Element> elements = new ArrayList<>(context.getEnvironment().getElementUtils().getAllMembers(type)); 169 List<Element> elements = new ArrayList<>(context.getEnvironment().getElementUtils().getAllMembers(type));
170 nodeData.setExtensionElements(getExtensionParser().parseAll(nodeData, elements)); 170 nodeData.setExtensionElements(getExtensionParser().parseAll(nodeData, elements));
171 if (nodeData.getExtensionElements() != null) { 171 if (nodeData.getExtensionElements() != null) {