Improve logging for parsing skylark files.

Also add preconditions check.

RELNOTES: None.
PiperOrigin-RevId: 203731929
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
index d2d0af1..9656ea1 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
@@ -25,6 +25,7 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.profiler.Profiler;
 import com.google.devtools.build.lib.profiler.ProfilerTask;
+import com.google.devtools.build.lib.profiler.SilentCloseable;
 import com.google.devtools.build.lib.syntax.DictionaryLiteral.DictionaryEntryLiteral;
 import com.google.devtools.build.lib.syntax.IfStatement.ConditionalStatements;
 import java.util.ArrayList;
@@ -185,12 +186,15 @@
    * @param input the input to parse
    * @param eventHandler a reporter for parsing errors
    * @see BuildFileAST#parseBuildString
-   * @see BuildFileAST#parseSkylarkString
    */
   public static ParseResult parseFile(ParserInputSource input, EventHandler eventHandler) {
     Lexer lexer = new Lexer(input, eventHandler);
     Parser parser = new Parser(lexer, eventHandler);
-    List<Statement> statements = parser.parseFileInput();
+    List<Statement> statements;
+    try (SilentCloseable c =
+        Profiler.instance().profile(ProfilerTask.SKYLARK_PARSER, input.getPath().getPathString())) {
+      statements = parser.parseFileInput();
+    }
     boolean errors = parser.errorsCount > 0 || lexer.containsErrors();
     return new ParseResult(
         statements, lexer.getComments(), locationFromStatements(lexer, statements), errors);
@@ -1002,7 +1006,6 @@
 
   // file_input ::= ('\n' | stmt)* EOF
   private List<Statement> parseFileInput() {
-    long startTime = Profiler.nanoTimeMaybe();
     List<Statement> list =  new ArrayList<>();
     while (token.kind != TokenKind.EOF) {
       if (token.kind == TokenKind.NEWLINE) {
@@ -1016,7 +1019,6 @@
         parseTopLevelStatement(list);
       }
     }
-    Profiler.instance().logSimpleTask(startTime, ProfilerTask.SKYLARK_PARSER, "");
     return list;
   }