comparison graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/codewriter/AbstractCodeWriter.java @ 13271:2b9fcffd6f36

Truffle-DSL: added support for generating execute methods with java varargs.
author Christian Humer <christian.humer@gmail.com>
date Sun, 01 Dec 2013 18:18:33 +0100
parents 380e0248f873
children 807ad2134a6b
comparison
equal deleted inserted replaced
13203:401e1473c546 13271:2b9fcffd6f36
272 init.acceptCodeElementScanner(this, p); 272 init.acceptCodeElementScanner(this, p);
273 write(")"); 273 write(")");
274 } 274 }
275 } 275 }
276 } else { 276 } else {
277 Element enclosing = f.getEnclosingElement();
277 writeModifiers(f.getModifiers()); 278 writeModifiers(f.getModifiers());
278 write(useImport(f, f.asType())); 279
279 280 boolean varArgs = false;
280 if (f.getEnclosingElement().getKind() == ElementKind.METHOD) { 281 if (enclosing.getKind() == ElementKind.METHOD) {
281 ExecutableElement method = (ExecutableElement) f.getEnclosingElement(); 282 ExecutableElement method = (ExecutableElement) enclosing;
282 if (method.isVarArgs() && method.getParameters().indexOf(f) == method.getParameters().size() - 1) { 283 if (method.isVarArgs() && method.getParameters().indexOf(f) == method.getParameters().size() - 1) {
283 write("..."); 284 varArgs = true;
284 } 285 }
286 }
287
288 TypeMirror varType = f.asType();
289 if (varArgs) {
290 if (varType.getKind() == TypeKind.ARRAY) {
291 varType = ((ArrayType) varType).getComponentType();
292 }
293 write(useImport(f, varType));
294 write("...");
295 } else {
296 write(useImport(f, varType));
285 } 297 }
286 298
287 write(" "); 299 write(" ");
288 write(f.getSimpleName()); 300 write(f.getSimpleName());
289 if (init != null) { 301 if (init != null) {