From 2c3ff4357e33b8517bb711733b2fbfc36f717aa3 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Fri, 6 Apr 2012 17:24:30 +0400 Subject: [PATCH] Added simple DescriptorRendererTest checking for global functions and properties. --- compiler/testData/renderer/GlobalFunctions.kt | 18 ++++ .../testData/renderer/GlobalProperties.kt | 20 +++++ .../jet/resolve/DescriptorRendererTest.java | 84 +++++++++++++++++++ 3 files changed, 122 insertions(+) create mode 100644 compiler/testData/renderer/GlobalFunctions.kt create mode 100644 compiler/testData/renderer/GlobalProperties.kt create mode 100644 compiler/tests/org/jetbrains/jet/resolve/DescriptorRendererTest.java diff --git a/compiler/testData/renderer/GlobalFunctions.kt b/compiler/testData/renderer/GlobalFunctions.kt new file mode 100644 index 00000000000..435d8a4836a --- /dev/null +++ b/compiler/testData/renderer/GlobalFunctions.kt @@ -0,0 +1,18 @@ +package rendererTest + +public fun pub() {} + +internal fun int : String {} + +val int2 : Int = 5 + +private fun prv() = 5 + +public fun Int.ext() : Int {} + +//package rendererTest defined in . +//final fun pub() : Unit defined in ..rendererTest +//final fun int() : jet.String defined in ..rendererTest +//final val int2 : jet.Int defined in ..rendererTest +//final fun prv() : jet.Int defined in ..rendererTest +//final fun jet.Int.ext() : jet.Int defined in ..rendererTest \ No newline at end of file diff --git a/compiler/testData/renderer/GlobalProperties.kt b/compiler/testData/renderer/GlobalProperties.kt new file mode 100644 index 00000000000..1cc9103465c --- /dev/null +++ b/compiler/testData/renderer/GlobalProperties.kt @@ -0,0 +1,20 @@ +package rendererTest + +public val pub = "" + +internal var int : String = "" + +val int2 : Int = 5 + +private var private = 5 + +public val Int.ext : Int +get() {} + +//package rendererTest defined in . +//final val pub : jet.String defined in ..rendererTest +//final var int : jet.String defined in ..rendererTest +//final val int2 : jet.Int defined in ..rendererTest +//final var private : jet.Int defined in ..rendererTest +//final val jet.Int.ext : jet.Int defined in ..rendererTest +//final fun jet.Int.get-ext() : jet.Int defined in ..rendererTest \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/resolve/DescriptorRendererTest.java b/compiler/tests/org/jetbrains/jet/resolve/DescriptorRendererTest.java new file mode 100644 index 00000000000..ec67e5dbd60 --- /dev/null +++ b/compiler/tests/org/jetbrains/jet/resolve/DescriptorRendererTest.java @@ -0,0 +1,84 @@ +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.resolve; + +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.editor.impl.DocumentImpl; +import org.jetbrains.jet.JetLiteFixture; +import org.jetbrains.jet.JetTestCaseBuilder; +import org.jetbrains.jet.JetTestUtils; +import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory; +import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; +import org.jetbrains.jet.lang.psi.JetElement; +import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.lang.psi.JetVisitorVoid; +import org.jetbrains.jet.lang.resolve.BindingContext; +import org.jetbrains.jet.lang.resolve.java.AnalyzeExhaust; +import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Evgeny Gerashchenko + * @since 4/6/12 + */ +public class DescriptorRendererTest extends JetLiteFixture { + public void testGlobalProperties() throws IOException { + doTest(); + } + + public void testGlobalFunctions() throws IOException { + doTest(); + } + + @Override + protected String getTestDataPath() { + return JetTestCaseBuilder.getTestDataPathBase() + "/renderer"; + } + + private void doTest() throws IOException { + String fileName = getTestName(false) + ".kt"; + JetFile psiFile = createPsiFile(fileName, loadFile(fileName)); + AnalyzeExhaust analyzeExhaust = + AnalyzerFacadeForJVM.analyzeOneFileWithJavaIntegration((JetFile)psiFile, JetControlFlowDataTraceFactory.EMPTY); + final BindingContext bindingContext = analyzeExhaust.getBindingContext(); + final List descriptors = new ArrayList(); + psiFile.acceptChildren(new JetVisitorVoid() { + @Override + public void visitJetElement(JetElement element) { + DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, element); + if (descriptor != null) { + descriptors.add(descriptor); + } + element.acceptChildren(this); + } + }); + + StringBuilder renderedDescriptors = new StringBuilder(); + for (DeclarationDescriptor descriptor : descriptors) { + if (renderedDescriptors.length() != 0) { + renderedDescriptors.append("\n"); + } + renderedDescriptors.append(DescriptorRenderer.TEXT.render(descriptor)); + } + + Document document = new DocumentImpl(psiFile.getText()); + assertSameLines(JetTestUtils.getLastCommentedLines(document), renderedDescriptors.toString()); + } +}