Make single-file classes tolerant to having many main()'s

This commit is contained in:
Michael Nedzelsky
2015-10-15 00:26:37 +03:00
parent 416dda95ce
commit 890ae3e914
22 changed files with 186 additions and 13 deletions
@@ -630,6 +630,21 @@ public class DescriptorUtils {
return SourceFile.NO_SOURCE_FILE;
}
public static boolean isTopLevelMainFunction(@NotNull DeclarationDescriptor descriptor) {
if (!(descriptor instanceof FunctionDescriptor) ||
!isTopLevelDeclaration(descriptor) ||
!"main".equals(descriptor.getName().asString())) return false;
FunctionDescriptor functionDescriptor = (FunctionDescriptor) descriptor;
List<ValueParameterDescriptor> valueParameterDescriptors = functionDescriptor.getValueParameters();
if (valueParameterDescriptors.size() != 1) return false;
JetType type = valueParameterDescriptors.get(0).getType();
return KotlinBuiltIns.isArray(type) && type.getArguments().size() == 1 && KotlinBuiltIns.isString(type.getArguments().get(0).getType());
}
private static void getSubPackagesFqNames(PackageViewDescriptor packageView, Set<FqName> result) {
FqName fqName = packageView.getFqName();
if (!fqName.isRoot()) {