protected void computeArgumentTypes() { List<XExpression> arguments = getArguments(); for (XExpression argument : arguments) { if (getResolvedTypes().doGetTypeData(argument) == null) { AbstractTypeComputationState argumentState = state.withNonVoidExpectation(); argumentState.computeTypes(argument); } } }
protected IFeatureLinkingCandidate createResolvedLink(XAbstractFeatureCall featureCall, JvmIdentifiableElement resolvedTo) { ExpressionAwareStackedResolvedTypes resolvedTypes = this.resolvedTypes.pushTypes(featureCall); ExpressionTypeComputationState state = createExpressionComputationState(featureCall, resolvedTypes); FeatureLinkHelper helper = new FeatureLinkHelper(); XExpression syntacticReceiver = helper.getSyntacticReceiver(featureCall); if (syntacticReceiver != null) { AbstractTypeComputationState child = state.withNonVoidExpectation(); child.computeTypes(syntacticReceiver); } XExpression implicitReceiver = featureCall.getImplicitReceiver(); if (implicitReceiver != null) { AbstractTypeComputationState child = state.withNonVoidExpectation(); child.computeTypes(implicitReceiver); } XExpression implicitFirstArgument = featureCall.getImplicitFirstArgument(); if (implicitFirstArgument != null) { AbstractTypeComputationState child = state.withNonVoidExpectation(); child.computeTypes(implicitFirstArgument); } if (featureCall.isTypeLiteral() || featureCall.isPackageFragment()) { return new ResolvedTypeLiteral(featureCall, resolvedTo, getSingleExpectation(state), state); } return new ResolvedFeature(featureCall, resolvedTo, helper, getSingleExpectation(state), state); }
protected void computeArgumentType(IFeatureCallArgumentSlot slot) { TypeParameterSubstitutor<?> substitutor = createArgumentTypeSubstitutor(); if (!slot.isVarArg() && !slot.isSuperfluous()) { computeFixedArityArgumentType(slot, substitutor); } else if (slot.isVarArg()) { computeVarArgumentType(slot, substitutor); } else { XExpression argument = slot.getArgumentExpression(); if (argument != null) { resolveArgumentType(argument, null, state.withNonVoidExpectation()); } } slot.markProcessed(); }
for(XExpression argument: arguments) { if (argument != null) { resolveArgumentType(argument, null, state.withNonVoidExpectation());