From 05baebfc27618b443ea399e5516d3ca58da4cd03 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 11 Jul 2014 02:18:59 +0400 Subject: [PATCH] Minor, store closure class name for debugging purposes Strip package from the name up to the last slash, because slashes are not allowed in a Name --- .../binding/CodegenAnnotatingVisitor.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java index eb6a6e3da3f..a67dd79adaf 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java @@ -99,9 +99,15 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { } @NotNull - private ClassDescriptor recordClassForFunction(@NotNull FunctionDescriptor funDescriptor, @NotNull Collection supertypes) { + private ClassDescriptor recordClassForFunction( + @NotNull FunctionDescriptor funDescriptor, + @NotNull Collection supertypes, + @NotNull String name + ) { + String simpleName = name.substring(name.lastIndexOf('/') + 1); ClassDescriptorImpl classDescriptor = new ClassDescriptorImpl( - funDescriptor.getContainingDeclaration(), Name.special(""), Modality.FINAL, supertypes, SourceElement.NO_SOURCE + funDescriptor.getContainingDeclaration(), Name.special(""), Modality.FINAL, supertypes, + SourceElement.NO_SOURCE ); classDescriptor.initialize(JetScope.EMPTY, Collections.emptySet(), null); @@ -267,7 +273,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { String name = inventAnonymousClassName(expression); Collection supertypes = runtimeTypes.getSupertypesForClosure(functionDescriptor); - ClassDescriptor classDescriptor = recordClassForFunction(functionDescriptor, supertypes); + ClassDescriptor classDescriptor = recordClassForFunction(functionDescriptor, supertypes, name); recordClosure(functionLiteral, classDescriptor, name); pushClassDescriptor(classDescriptor); @@ -318,7 +324,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { runtimeTypes.getSupertypesForFunctionReference((FunctionDescriptor) referencedFunction.getResultingDescriptor()); String name = inventAnonymousClassName(expression); - ClassDescriptor classDescriptor = recordClassForFunction(functionDescriptor, supertypes); + ClassDescriptor classDescriptor = recordClassForFunction(functionDescriptor, supertypes, name); recordClosure(expression, classDescriptor, name); pushClassDescriptor(classDescriptor); @@ -369,7 +375,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { else { String name = inventAnonymousClassName(function); Collection supertypes = runtimeTypes.getSupertypesForClosure(functionDescriptor); - ClassDescriptor classDescriptor = recordClassForFunction(functionDescriptor, supertypes); + ClassDescriptor classDescriptor = recordClassForFunction(functionDescriptor, supertypes, name); recordClosure(function, classDescriptor, name); pushClassDescriptor(classDescriptor);