Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: compiler/java/com/google/dart/compiler/backend/js/JsParserException.java

Issue 9479013: Remove backends. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 package com.google.dart.compiler.backend.js;
6
7 /**
8 * Indicates inability to parse JavaScript source.
9 */
10 public class JsParserException extends Exception {
11
12 /**
13 * Represents the location of a parser exception.
14 */
15 public static class SourceDetail {
16 private final String fileName;
17 private final int line;
18 private final int lineOffset;
19 private final String lineSource;
20
21 public SourceDetail(int line, String lineSource, int lineOffset, String file Name) {
22 this.line = line;
23 this.lineSource = lineSource;
24 this.lineOffset = lineOffset;
25 this.fileName = fileName;
26 }
27
28 public String getFileName() {
29 return fileName;
30 }
31
32 public int getLine() {
33 return line;
34 }
35
36 public int getLineOffset() {
37 return lineOffset;
38 }
39
40 public String getLineSource() {
41 return lineSource;
42 }
43 }
44
45 private static String createMessageWithDetail(String msg, SourceDetail sourceD etail) {
46 if (sourceDetail == null) {
47 return msg;
48 }
49 StringBuffer sb = new StringBuffer();
50 sb.append(sourceDetail.getFileName());
51 sb.append('(');
52 sb.append(sourceDetail.getLine());
53 sb.append(')');
54 sb.append(": ");
55 sb.append(msg);
56 if (sourceDetail.getLineSource() != null) {
57 sb.append("\n> ");
58 sb.append(sourceDetail.getLineSource());
59 sb.append("\n> ");
60 for (int i = 0, n = sourceDetail.getLineOffset(); i < n; ++i) {
61 sb.append('-');
62 }
63 sb.append('^');
64 }
65 return sb.toString();
66 }
67
68 private final SourceDetail sourceDetail;
69
70 public JsParserException(String msg) {
71 this(msg, null);
72 }
73
74 public JsParserException(String msg, int line, String lineSource, int lineOffs et, String fileName) {
75 this(msg, new SourceDetail(line, lineSource, lineOffset, fileName));
76 }
77
78 public JsParserException(String msg, SourceDetail sourceDetail) {
79 super(createMessageWithDetail(msg, sourceDetail));
80 this.sourceDetail = sourceDetail;
81 }
82
83 /**
84 * Provides additional source detail in some cases.
85 *
86 * @return additional detail regarding the error, or <code>null</code> if no
87 * additional detail is available
88 */
89 public SourceDetail getSourceDetail() {
90 return sourceDetail;
91 }
92 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698