comparison graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/MessageContainer.java @ 20940:476374f3fe9a

Truffle-DSL: generate better polymorphic execute signatures
author Christian Humer <christian.humer@gmail.com>
date Tue, 14 Apr 2015 15:12:48 +0200
parents 62c43fcf5be2
children
comparison
equal deleted inserted replaced
20939:f83fd99b2962 20940:476374f3fe9a
104 return Collections.emptyList(); 104 return Collections.emptyList();
105 } 105 }
106 visitedSinks.add(this); 106 visitedSinks.add(this);
107 107
108 List<Message> foundMessages = new ArrayList<>(); 108 List<Message> foundMessages = new ArrayList<>();
109 if (ElementUtils.typeEquals(getMessageElement().asType(), e.asType())) { 109 if (getMessageElement() != null && ElementUtils.typeEquals(getMessageElement().asType(), e.asType())) {
110 foundMessages.addAll(getMessages()); 110 foundMessages.addAll(getMessages());
111 } 111 }
112 for (MessageContainer sink : findChildContainers()) { 112 for (MessageContainer sink : findChildContainers()) {
113 foundMessages.addAll(sink.collectMessagesWithElementChildren(visitedSinks, e)); 113 foundMessages.addAll(sink.collectMessagesWithElementChildren(visitedSinks, e));
114 } 114 }
117 117
118 private void verifyExpectedMessages(ProcessorContext context, Log log, List<Message> msgs) { 118 private void verifyExpectedMessages(ProcessorContext context, Log log, List<Message> msgs) {
119 TypeElement expectError = context.getTruffleTypes().getExpectError(); 119 TypeElement expectError = context.getTruffleTypes().getExpectError();
120 if (expectError != null) { 120 if (expectError != null) {
121 Element element = getMessageElement(); 121 Element element = getMessageElement();
122 AnnotationMirror mirror = ElementUtils.findAnnotationMirror(element.getAnnotationMirrors(), expectError.asType()); 122 if (element != null) {
123 if (mirror != null) { 123 AnnotationMirror mirror = ElementUtils.findAnnotationMirror(element.getAnnotationMirrors(), expectError.asType());
124 List<String> values = ElementUtils.getAnnotationValueList(String.class, mirror, "value"); 124 if (mirror != null) {
125 if (values == null) { 125 List<String> values = ElementUtils.getAnnotationValueList(String.class, mirror, "value");
126 values = Collections.emptyList(); 126 if (values == null) {
127 } 127 values = Collections.emptyList();
128 if (values.size() != msgs.size()) { 128 }
129 log.message(Kind.ERROR, element, mirror, ElementUtils.getAnnotationValue(mirror, "value"), String.format("Error count expected %s but was %s.", values.size(), msgs.size())); 129 if (values.size() != msgs.size()) {
130 log.message(Kind.ERROR, element, mirror, ElementUtils.getAnnotationValue(mirror, "value"), String.format("Error count expected %s but was %s.", values.size(), msgs.size()));
131 }
130 } 132 }
131 } 133 }
132 } 134 }
133 } 135 }
134 136