public void genFunctionOrProperty( @NotNull JetTypeParameterListOwner functionOrProperty, @NotNull ClassBuilder classBuilder) { FunctionCodegen functionCodegen = new FunctionCodegen(context, classBuilder, state, this); if (functionOrProperty instanceof JetNamedFunction) { try { functionCodegen.gen((JetNamedFunction) functionOrProperty); } catch (ProcessCanceledException e) { throw e; } catch (CompilationException e) { throw e; } catch (Exception e) { throw new CompilationException( "Failed to generate function " + functionOrProperty.getName(), e, functionOrProperty); } } else if (functionOrProperty instanceof JetProperty) { try { new PropertyCodegen(context, classBuilder, functionCodegen, this) .gen((JetProperty) functionOrProperty); } catch (ProcessCanceledException e) { throw e; } catch (CompilationException e) { throw e; } catch (Exception e) { throw new CompilationException( "Failed to generate property " + functionOrProperty.getName(), e, functionOrProperty); } } else { throw new IllegalArgumentException("Unknown parameter: " + functionOrProperty); } }
private void checkTypeParameters(JetTypeParameterListOwner typeParameterListOwner) { // TODO: Support annotation for type parameters for (JetTypeParameter jetTypeParameter : typeParameterListOwner.getTypeParameters()) { AnnotationResolver.reportUnsupportedAnnotationForTypeParameter(jetTypeParameter, trace); TypeParameterDescriptor typeParameter = trace.get(TYPE_PARAMETER, jetTypeParameter); if (typeParameter != null) { DescriptorResolver.checkConflictingUpperBounds(trace, typeParameter, jetTypeParameter); } AnnotationTargetChecker.INSTANCE$.check(jetTypeParameter, trace); } }