comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java @ 8662:5eeade940236

Fixed user generic signature must not match generated generic signature.
author Christian Humer <christian.humer@gmail.com>
date Sat, 06 Apr 2013 16:26:19 +0200
parents 586b5e117c44
children e2b471ba533a
comparison
equal deleted inserted replaced
8661:e0ff5cf358a4 8662:5eeade940236
326 326
327 specializations.add(genericSpecialization); 327 specializations.add(genericSpecialization);
328 } 328 }
329 329
330 if (genericSpecialization != null) { 330 if (genericSpecialization != null) {
331 if (genericSpecialization.isUseSpecializationsForGeneric()) {
332 for (ActualParameter parameter : genericSpecialization.getReturnTypeAndParameters()) {
333 if (Utils.isObject(parameter.getActualType())) {
334 continue;
335 }
336 Set<String> types = new HashSet<>();
337 for (SpecializationData specialization : specializations) {
338 ActualParameter actualParameter = specialization.findParameter(parameter.getLocalName());
339 if (actualParameter != null) {
340 types.add(Utils.getQualifiedName(actualParameter.getActualType()));
341 }
342 }
343 if (types.size() > 1) {
344 genericSpecialization.replaceParameter(parameter.getLocalName(), new ActualParameter(parameter, node.getTypeSystem().getGenericType()));
345 }
346 }
347 }
331 TemplateMethod uninializedMethod = new TemplateMethod("Uninitialized", node, genericSpecialization.getSpecification(), null, null, genericSpecialization.getReturnType(), 348 TemplateMethod uninializedMethod = new TemplateMethod("Uninitialized", node, genericSpecialization.getSpecification(), null, null, genericSpecialization.getReturnType(),
332 genericSpecialization.getParameters()); 349 genericSpecialization.getParameters());
333 // should not use messages from generic specialization 350 // should not use messages from generic specialization
334 uninializedMethod.getMessages().clear(); 351 uninializedMethod.getMessages().clear();
335 specializations.add(new SpecializationData(uninializedMethod, false, true)); 352 specializations.add(new SpecializationData(uninializedMethod, false, true));