Merge commit 'origin/master'
[idea/community.git] / plugins / groovy / src / org / jetbrains / plugins / groovy / lang / psi / impl / GroovyFileImpl.java
index 35a6f001530c549dc46d14a9603f982be10f8b1f..5e297a3cc60e102b5fd5f05ce28ab4aca6f92c56 100644 (file)
@@ -323,20 +323,22 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile {
       return ((GrFileStub)stub).isScript();
     }
 
-    Boolean isScript = myScript;
-    if (isScript == null) {
+    if (myScript == null) {
       final GrTopStatement[] topStatements = findChildrenByClass(GrTopStatement.class);
-      isScript = topStatements.length == 0;
+      boolean hasClassDefinitions = false;
+      boolean hasTopStatements = false;
       for (GrTopStatement st : topStatements) {
-        if (!(st instanceof GrTypeDefinition || st instanceof GrImportStatement || st instanceof GrPackageDefinition)) {
-          isScript = Boolean.TRUE;
+        if (st instanceof GrTypeDefinition) {
+          hasClassDefinitions = true;
+        }
+        else if (!(st instanceof GrImportStatement || st instanceof GrPackageDefinition)) {
+          hasTopStatements = true;
           break;
         }
       }
-      myScript = isScript;
+      myScript = hasTopStatements || !hasClassDefinitions;
     }
-
-    return isScript;
+    return myScript;
   }
 
   @Override