Minor, make descriptor available to NamespaceCodegen
This commit is contained in:
@@ -63,6 +63,7 @@ public class NamespaceCodegen extends MemberCodegen {
|
||||
private final ClassBuilderOnDemand v;
|
||||
@NotNull private final FqName name;
|
||||
private final Collection<JetFile> files;
|
||||
private final NamespaceDescriptor descriptor;
|
||||
|
||||
public NamespaceCodegen(
|
||||
@NotNull ClassBuilderOnDemand v,
|
||||
@@ -77,6 +78,9 @@ public class NamespaceCodegen extends MemberCodegen {
|
||||
name = fqName;
|
||||
this.files = namespaceFiles;
|
||||
|
||||
descriptor = state.getBindingContext().get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, name);
|
||||
assert descriptor != null : "No namespace found for FQ name " + name;
|
||||
|
||||
final PsiFile sourceFile = namespaceFiles.size() == 1 ? namespaceFiles.iterator().next().getContainingFile() : null;
|
||||
|
||||
v.addOptionalDeclaration(new ClassBuilderOnDemand.ClassBuilderCallback() {
|
||||
@@ -178,8 +182,6 @@ public class NamespaceCodegen extends MemberCodegen {
|
||||
|
||||
@Nullable
|
||||
private ClassBuilder generate(@NotNull JetFile file) {
|
||||
NamespaceDescriptor descriptor = state.getBindingContext().get(BindingContext.FILE_TO_NAMESPACE, file);
|
||||
assert descriptor != null : "No namespace found for file " + file + " declared package: " + file.getPackageName();
|
||||
boolean generateSrcClass = false;
|
||||
for (JetDeclaration declaration : file.getDeclarations()) {
|
||||
if (declaration instanceof JetProperty || declaration instanceof JetNamedFunction) {
|
||||
@@ -187,7 +189,7 @@ public class NamespaceCodegen extends MemberCodegen {
|
||||
}
|
||||
else if (declaration instanceof JetClassOrObject) {
|
||||
if (state.isGenerateDeclaredClasses()) {
|
||||
generateClassOrObject(descriptor, (JetClassOrObject) declaration);
|
||||
generateClassOrObject((JetClassOrObject) declaration);
|
||||
}
|
||||
}
|
||||
else if (declaration instanceof JetScript) {
|
||||
@@ -221,14 +223,14 @@ public class NamespaceCodegen extends MemberCodegen {
|
||||
}
|
||||
}
|
||||
|
||||
generateStaticInitializers(descriptor, builder, file, nameSpaceContext);
|
||||
generateStaticInitializers(builder, file, nameSpaceContext);
|
||||
|
||||
builder.done();
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
public void generateClassOrObject(@NotNull NamespaceDescriptor descriptor, @NotNull JetClassOrObject classOrObject) {
|
||||
public void generateClassOrObject(@NotNull JetClassOrObject classOrObject) {
|
||||
CodegenContext context = CodegenContext.STATIC.intoNamespace(descriptor);
|
||||
genClassOrObject(context, classOrObject);
|
||||
}
|
||||
@@ -268,12 +270,7 @@ public class NamespaceCodegen extends MemberCodegen {
|
||||
}
|
||||
}
|
||||
|
||||
private void generateStaticInitializers(
|
||||
NamespaceDescriptor descriptor,
|
||||
@NotNull ClassBuilder builder,
|
||||
@NotNull JetFile file,
|
||||
@NotNull FieldOwnerContext context
|
||||
) {
|
||||
private void generateStaticInitializers(@NotNull ClassBuilder builder, @NotNull JetFile file, @NotNull FieldOwnerContext context) {
|
||||
List<JetProperty> properties = collectPropertiesToInitialize(file);
|
||||
if (properties.isEmpty()) return;
|
||||
|
||||
|
||||
+3
-12
@@ -42,11 +42,9 @@ import org.jetbrains.jet.codegen.CompilationErrorHandler;
|
||||
import org.jetbrains.jet.codegen.NamespaceCodegen;
|
||||
import org.jetbrains.jet.codegen.state.GenerationState;
|
||||
import org.jetbrains.jet.codegen.state.Progress;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
import java.util.Collection;
|
||||
@@ -86,9 +84,7 @@ public class KotlinJavaFileStubProvider implements CachedValueProvider<PsiJavaFi
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static KotlinJavaFileStubProvider createForDeclaredTopLevelClass(
|
||||
@NotNull final JetClassOrObject classOrObject
|
||||
) {
|
||||
public static KotlinJavaFileStubProvider createForDeclaredTopLevelClass(@NotNull final JetClassOrObject classOrObject) {
|
||||
return new KotlinJavaFileStubProvider(classOrObject.getProject(), new StubGenerationStrategy.WithDeclaredClasses() {
|
||||
private JetFile getFile() {
|
||||
JetFile file = (JetFile) classOrObject.getContainingFile();
|
||||
@@ -110,13 +106,8 @@ public class KotlinJavaFileStubProvider implements CachedValueProvider<PsiJavaFi
|
||||
|
||||
@Override
|
||||
public void generate(@NotNull GenerationState state, @NotNull Collection<JetFile> files) {
|
||||
FqName packageFqName = getPackageFqName();
|
||||
NamespaceCodegen namespaceCodegen = state.getFactory().forNamespace(packageFqName, files);
|
||||
NamespaceDescriptor namespaceDescriptor =
|
||||
state.getBindingContext().get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, packageFqName);
|
||||
assert namespaceDescriptor != null : "No package descriptor for " + packageFqName + " for class " + classOrObject.getText();
|
||||
namespaceCodegen.generateClassOrObject(namespaceDescriptor, classOrObject);
|
||||
|
||||
NamespaceCodegen namespaceCodegen = state.getFactory().forNamespace(getPackageFqName(), files);
|
||||
namespaceCodegen.generateClassOrObject(classOrObject);
|
||||
state.getFactory().files();
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user