001 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 002 // for details. All rights reserved. Use of this source code is governed by a 003 // BSD-style license that can be found in the LICENSE file. 004 005 package com.google.dart.compiler.common; 006 007 import com.google.dart.compiler.Source; 008 009 import java.io.Serializable; 010 011 /** 012 * Tracks file and line information for AST nodes. 013 */ 014 public interface SourceInfo extends Serializable { 015 016 /** 017 * The source code provider. 018 */ 019 Source getSource(); 020 021 /** 022 * @return A 1-based line number into the original source file indicating 023 * where the source fragment begins. 024 */ 025 int getLine(); 026 027 /** 028 * @return A 1-based column number into the original source file indicating 029 * where the source fragment begins. 030 */ 031 int getColumn(); 032 033 /** 034 * Returns the character index into the original source file indicating 035 * where the source fragment corresponding to this node begins. 036 * 037 * <p> 038 * The parser supplies useful well-defined source ranges to the nodes it creates. 039 * 040 * @return the 0-based character index, or <code>-1</code> 041 * if no source startPosition information is recorded for this node 042 * @see #getLength() 043 * @see HasSourceInfo#setSourceLocation(Source, int, int, int, int) 044 */ 045 int getStart(); 046 047 /** 048 * Returns the length in characters of the original source file indicating 049 * where the source fragment corresponding to this node ends. 050 * <p> 051 * The parser supplies useful well-defined source ranges to the nodes it creates. 052 * 053 * @return a (possibly 0) length, or <code>0</code> 054 * if no source source position information is recorded for this node 055 * @see #getStart() 056 * @see HasSourceInfo#setSourceLocation(Source, int, int, int, int) 057 */ 058 int getLength(); 059 }