fix for 1345

This commit is contained in:
Alex Tkachman
2012-02-26 09:38:07 +02:00
parent 010090cd51
commit eb017d8a2e
4 changed files with 126 additions and 95 deletions
@@ -431,6 +431,14 @@ public class FunctionCodegen {
private static void checkOverride(CodegenContext owner, GenerationState state, ClassBuilder v, Method jvmSignature, FunctionDescriptor functionDescriptor, FunctionDescriptor overriddenFunction) {
Method method = state.getTypeMapper().mapSignature(functionDescriptor.getName(), functionDescriptor).getAsmMethod();
Method overriden = state.getTypeMapper().mapSignature(overriddenFunction.getName(), overriddenFunction.getOriginal()).getAsmMethod();
if(overriddenFunction.getModality() == Modality.ABSTRACT) {
Set<? extends FunctionDescriptor> overriddenFunctions = overriddenFunction.getOverriddenDescriptors();
for (FunctionDescriptor of : overriddenFunctions) {
checkOverride(owner, state, v, jvmSignature, overriddenFunction, of.getOriginal());
}
}
if(differentMethods(method, overriden)) {
int flags = ACC_PUBLIC | ACC_BRIDGE; // TODO.
@@ -0,0 +1,13 @@
trait Creator<T> {
fun create() : T
}
class Actor(val code: String = "OK")
trait Factory : Creator<Actor>
class MyFactory() : Factory {
override fun create(): Actor = Actor()
}
fun box() : String = MyFactory().create().code
@@ -303,4 +303,8 @@ public class ClassGenTest extends CodegenTestCase {
blackBoxFile("regressions/kt633.kt");
}
public void testKt1345() throws Exception {
blackBoxFile("regressions/kt1345.kt");
}
}
+101 -95
View File
@@ -58,10 +58,10 @@
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="GuiceDsl.kt" pinned="false" current="false" current-in-tab="false">
<file leaf-file-name="GuiceDsl.kt" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/GuiceDsl.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="41" column="0" selection-start="1211" selection-end="1211" vertical-scroll-proportion="0.0">
<state line="47" column="0" selection-start="1520" selection-end="1520" vertical-scroll-proportion="0.6625">
<folding />
</state>
</provider>
@@ -130,10 +130,10 @@
</provider>
</entry>
</file>
<file leaf-file-name="GuiceExample.kt" pinned="false" current="true" current-in-tab="true">
<file leaf-file-name="GuiceExample.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/GuiceExample.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="50" selection-start="860" selection-end="860" vertical-scroll-proportion="0.5938967">
<state line="31" column="50" selection-start="860" selection-end="860" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -161,16 +161,15 @@
<option value="$PROJECT_DIR$/src/Guice.kt" />
<option value="$PROJECT_DIR$/src/GuiceExample.java" />
<option value="$PROJECT_DIR$/src/org/jetbrains/kotlin/examples/guice/kotlin/GuiceExample.kt" />
<option value="$PROJECT_DIR$/src/GuiceDsl.kt" />
<option value="$PROJECT_DIR$/src/GuiceExample.kt" />
<option value="$PROJECT_DIR$/src/GuiceDsl.kt" />
</list>
</option>
</component>
<component name="ProjectFrameBounds">
<option name="x" value="1" />
<option name="y" value="22" />
<option name="width" value="1411" />
<option name="height" value="826" />
<option name="y" value="32" />
<option name="width" value="1429" />
<option name="height" value="790" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
@@ -203,16 +202,6 @@
<sortByType />
</navigator>
<panes>
<pane id="Scope">
<subPane subId="Project Files">
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="ProjectPane">
<subPane>
<PATH>
@@ -235,6 +224,48 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="guice-kotlin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="guice-kotlin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="guice-kotlin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="guice-kotlin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="GuiceDsl.kt" />
<option name="myItemType" value="org.jetbrains.jet.plugin.projectView.JetFileTreeNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="Scope">
<subPane subId="Project Files">
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="PackagesPane">
@@ -268,10 +299,10 @@
<property name="Repository.Attach.Sources" value="true" />
<property name="MemberChooser.showClasses" value="true" />
<property name="GoToClass.includeLibraries" value="false" />
<property name="dynamic.classpath" value="false" />
<property name="Downloaded.Files.Path" value="$PROJECT_DIR$/lib" />
<property name="options.splitter.details.proportions" value="0.2" />
<property name="options.searchVisible" value="true" />
<property name="options.splitter.details.proportions" value="0.2" />
<property name="Downloaded.Files.Path" value="$PROJECT_DIR$/lib" />
<property name="dynamic.classpath" value="false" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
@@ -355,6 +386,24 @@
<option name="Maven.BeforeRunTask" enabled="false" />
</method>
</configuration>
<configuration default="true" type="Applet" factoryName="Applet">
<module name="" />
<option name="MAIN_CLASS_NAME" />
<option name="HTML_FILE_NAME" />
<option name="HTML_USED" value="false" />
<option name="WIDTH" value="400" />
<option name="HEIGHT" value="300" />
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
<option name="VM_PARAMETERS" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<method>
<option name="AntTarget" enabled="false" />
<option name="BuildArtifacts" enabled="false" />
<option name="Make" enabled="true" />
<option name="Maven.BeforeRunTask" enabled="false" />
</method>
</configuration>
<configuration default="true" type="TestNG" factoryName="TestNG">
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
@@ -387,24 +436,6 @@
<option name="Maven.BeforeRunTask" enabled="false" />
</method>
</configuration>
<configuration default="true" type="Applet" factoryName="Applet">
<module name="" />
<option name="MAIN_CLASS_NAME" />
<option name="HTML_FILE_NAME" />
<option name="HTML_USED" value="false" />
<option name="WIDTH" value="400" />
<option name="HEIGHT" value="300" />
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
<option name="VM_PARAMETERS" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<method>
<option name="AntTarget" enabled="false" />
<option name="BuildArtifacts" enabled="false" />
<option name="Make" enabled="true" />
<option name="Maven.BeforeRunTask" enabled="false" />
</method>
</configuration>
<configuration default="true" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
@@ -506,7 +537,7 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="1" y="22" width="1411" height="826" extended-state="0" />
<frame x="0" y="32" width="1429" height="790" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
@@ -515,22 +546,23 @@
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39886847" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32956153" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="CodeWindow" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39985326" sideWeight="0.6718529" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Kotlin" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32956153" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32884902" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32956153" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24944974" sideWeight="0.6718529" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24909486" sideWeight="0.671151" order="0" side_tool="false" content_ui="combo" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3281471" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="ResolveWindow" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.37655678" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32956153" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="CodeWindow" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39985326" sideWeight="0.6718529" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="ResolveWindow" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.37655678" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="VcsContentAnnotationSettings">
@@ -597,105 +629,79 @@
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/Scope.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="0" selection-start="597" selection-end="597" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="16" column="0" selection-start="597" selection-end="597" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/internal/Scoping.java">
<provider selected="true" editor-type-id="text-editor">
<state line="32" column="0" selection-start="1182" selection-end="1182" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="32" column="0" selection-start="1182" selection-end="1182" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/binder/AnnotatedBindingBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="63" selection-start="850" selection-end="850" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="25" column="63" selection-start="850" selection-end="850" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/Provider.java">
<provider selected="true" editor-type-id="text-editor">
<state line="44" column="17" selection-start="1946" selection-end="1946" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="44" column="17" selection-start="1946" selection-end="1946" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/Binder.java">
<provider selected="true" editor-type-id="text-editor">
<state line="243" column="14" selection-start="11110" selection-end="11110" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="243" column="14" selection-start="11110" selection-end="11110" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/binder/LinkedBindingBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state line="50" column="0" selection-start="1509" selection-end="1509" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/spi/InjectionPoint.java">
<provider selected="true" editor-type-id="text-editor">
<state line="374" column="30" selection-start="14896" selection-end="14896" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="50" column="0" selection-start="1509" selection-end="1509" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/internal/BindingBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state line="129" column="53" selection-start="4384" selection-end="4384" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="129" column="53" selection-start="4384" selection-end="4384" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/spi/InjectionPoint.java">
<provider selected="true" editor-type-id="text-editor">
<state line="374" column="30" selection-start="14896" selection-end="14896" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/binder/ScopedBindingBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="0" selection-start="936" selection-end="936" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="31" column="0" selection-start="936" selection-end="936" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/internal/AbstractBindingBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state line="88" column="34" selection-start="3438" selection-end="3438" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="88" column="34" selection-start="3438" selection-end="3438" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/internal/BindingImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state line="99" column="0" selection-start="2736" selection-end="2736" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="99" column="0" selection-start="2736" selection-end="2736" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/internal/ProviderInstanceBindingImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state line="79" column="24" selection-start="3009" selection-end="3009" vertical-scroll-proportion="0.0">
<folding />
</state>
<state line="79" column="24" selection-start="3009" selection-end="3009" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/guice-3.0-sources.jar!/com/google/inject/Injector.java">
<provider selected="true" editor-type-id="text-editor">
<state line="148" column="0" selection-start="6054" selection-end="6054" vertical-scroll-proportion="0.0">
<state line="148" column="0" selection-start="6054" selection-end="6054" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/GuiceExample.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="50" selection-start="860" selection-end="860" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/GuiceDsl.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="41" column="0" selection-start="1211" selection-end="1211" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/GuiceExample.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="50" selection-start="860" selection-end="860" vertical-scroll-proportion="0.5938967">
<state line="47" column="0" selection-start="1520" selection-end="1520" vertical-scroll-proportion="0.6625">
<folding />
</state>
</provider>