private static boolean isExpressionParameter(CsmClassifier cls, CsmSpecializationParameter specParam, int specParamIndex) { if (CsmKindUtilities.isExpressionBasedSpecalizationParameter(specParam)) { return true; } if (CsmKindUtilities.isTemplate(cls)) { List<CsmTemplateParameter> templateParams = ((CsmTemplate) cls).getTemplateParameters(); if (templateParams != null && templateParams.size() > specParamIndex) { CsmTemplateParameter param = templateParams.get(specParamIndex); if (param != null && !param.isTypeBased()) { return true; } } } return false; }
CsmType instType = instParamTypeIter.next(); String instParamText = instParamTextIter.next(); if (specTemplateParam.isTypeBased() && CsmKindUtilities.isTypeBasedSpecalizationParameter(specParam) && instType != null) { CsmType specParamType = ((CsmTypeBasedSpecializationParameter) specParam).getType(); DefaultCalcTemplateTypeStrategy calcStrategy = new DefaultCalcTemplateTypeStrategy(CalcTemplateTypeStrategy.Error.MatchQualsError); } else if (!specTemplateParam.isTypeBased() && CsmKindUtilities.isTypeBasedSpecalizationParameter(specParam)) { CsmType specParamType = ((CsmTypeBasedSpecializationParameter) specParam).getType(); String specParamText = specParamType != null ? specParamType.getCanonicalText().toString() : null; ); } else if (!specTemplateParam.isTypeBased() && CsmKindUtilities.isExpressionBasedSpecalizationParameter(specParam)) { String specParamText = specParam.getText().toString(); if (specTemplateParam.getName().toString().equals(specParamText)) {
specParamText = specParam.getText().toString(); for (CsmTemplateParameter specTemplateParam : spec.getTemplateParameters()) { if (!specTemplateParam.isTypeBased()) { if (specTemplateParam.getName().toString().equals(specParamText)) { relatedSpecTemplateParam = specTemplateParam; if (relatedSpecTemplateParam != null && !relatedSpecTemplateParam.isTypeBased()) {
if (tplParam.isTypeBased() && canBeFunctionType(paramInst)) { RenderedExpression renderedExpression = renderExpression(paramInst, new ExpressionBuilderImpl.Creator()); type = CsmTypes.createType(renderedExpression.text, context.getContextScope(), new CsmTypes.SequenceDescriptor(