From 7f2e309ed7d13196d2636994a7e76eaee66a2467 Mon Sep 17 00:00:00 2001 From: svtk Date: Fri, 28 Oct 2011 13:32:45 +0400 Subject: [PATCH] some draft for inline functions (to return to it after M1) --- .../jet/lang/cfg/JetControlFlowProcessor.java | 32 ++- .../lang/cfg/JetFlowInformationProvider.java | 224 ++++++------------ .../jet/lang/diagnostics/Errors.java | 2 + .../jet/lang/resolve/ControlFlowAnalyzer.java | 8 +- 4 files changed, 102 insertions(+), 164 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index 15d55b7f5de..b2f14f97964 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -5,10 +5,12 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContextUtils; import org.jetbrains.jet.lang.resolve.BindingTrace; +import org.jetbrains.jet.lang.resolve.calls.ResolvedCall; import org.jetbrains.jet.lang.types.JetStandardClasses; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.expressions.OperatorConventions; @@ -590,6 +592,17 @@ public class JetControlFlowProcessor { @Override public void visitCallExpression(JetCallExpression expression) { + //inline functions after M1 +// ResolvedCall resolvedCall = trace.get(BindingContext.RESOLVED_CALL, expression.getCalleeExpression()); +// assert resolvedCall != null; +// CallableDescriptor resultingDescriptor = resolvedCall.getResultingDescriptor(); +// PsiElement element = trace.get(BindingContext.DESCRIPTOR_TO_DECLARATION, resultingDescriptor); +// if (element instanceof JetNamedFunction) { +// JetNamedFunction namedFunction = (JetNamedFunction) element; +// if (namedFunction.hasModifier(JetTokens.INLINE_KEYWORD)) { +// } +// } + for (JetTypeProjection typeArgument : expression.getTypeArguments()) { value(typeArgument, false); } @@ -726,6 +739,9 @@ public class JetControlFlowProcessor { @Override public void visitObjectDeclaration(JetObjectDeclaration declaration) { +// for (JetDelegationSpecifier delegationSpecifier : declaration.getDelegationSpecifiers()) { +// value(delegationSpecifier, inCondition); +// } Queue