Split CompileTimeConstant into two entities
1. ConstantValue * just holds some value and its type * implementations for concrete constants 2. CompileTimeConstant * is only produced by ConstantExpressionEvaluator * has additional flags (canBeUsedInAnnotation etc) * has two implementations TypedCompileTimeConstant containing a constant value and IntegerValueConstant which does not have exact type * can be converted to ConstantValue Adjustt usages to use ConstantValue if flags are not needed Add tests for some uncovered cases
This commit is contained in:
@@ -20,37 +20,28 @@ import com.google.dart.compiler.backend.js.ast.JsFunctionScope
|
||||
import com.google.dart.compiler.backend.js.ast.JsProgram
|
||||
import com.google.dart.compiler.backend.js.ast.JsRootScope
|
||||
import com.google.gwt.dev.js.parserExceptions.AbortParsingException
|
||||
import com.google.gwt.dev.js.rhino.*
|
||||
import com.google.gwt.dev.js.rhino.Utils.*
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import com.google.gwt.dev.js.rhino.CodePosition
|
||||
import com.google.gwt.dev.js.rhino.ErrorReporter
|
||||
import com.google.gwt.dev.js.rhino.Utils.isEndOfLine
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory1
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||
import org.jetbrains.kotlin.diagnostics.ParametrizedDiagnostic
|
||||
import org.jetbrains.kotlin.js.parser.parse
|
||||
import org.jetbrains.kotlin.js.patterns.DescriptorPredicate
|
||||
import org.jetbrains.kotlin.js.patterns.PatternBuilder
|
||||
import org.jetbrains.kotlin.js.resolve.diagnostics.ErrorsJs
|
||||
import org.jetbrains.kotlin.psi.JetCallExpression
|
||||
import org.jetbrains.kotlin.psi.JetExpression
|
||||
import org.jetbrains.kotlin.psi.JetLiteralStringTemplateEntry
|
||||
import org.jetbrains.kotlin.psi.JetStringTemplateExpression
|
||||
import org.jetbrains.kotlin.renderer.Renderer
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.TemporaryBindingTrace
|
||||
import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker
|
||||
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
|
||||
import org.jetbrains.kotlin.types.JetType
|
||||
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import org.jetbrains.kotlin.js.parser.parse
|
||||
import java.io.StringReader
|
||||
|
||||
import kotlin.platform.platformStatic
|
||||
import org.jetbrains.kotlin.resolve.TemporaryBindingTrace
|
||||
|
||||
public class JsCallChecker : CallChecker {
|
||||
|
||||
@@ -84,7 +75,7 @@ public class JsCallChecker : CallChecker {
|
||||
return
|
||||
}
|
||||
|
||||
val code = evaluationResult.value as String
|
||||
val code = evaluationResult.getValue(stringType) as String
|
||||
val errorReporter = JsCodeErrorReporter(argument, code, context.trace)
|
||||
|
||||
try {
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.kotlin.js.PredefinedAnnotation;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||
import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant;
|
||||
import org.jetbrains.kotlin.resolve.constants.ConstantValue;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -53,7 +53,7 @@ public final class AnnotationsUtils {
|
||||
if (annotationDescriptor.getAllValueArguments().isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
CompileTimeConstant<?> constant = annotationDescriptor.getAllValueArguments().values().iterator().next();
|
||||
ConstantValue<?> constant = annotationDescriptor.getAllValueArguments().values().iterator().next();
|
||||
//TODO: this is a quick fix for unsupported default args problem
|
||||
if (constant == null) {
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user