Class SourceFile

  • All Implemented Interfaces:
    StaticSourceFile, java.io.Serializable
    Direct Known Subclasses:
    JSSourceFile

    public class SourceFile
    extends java.lang.Object
    implements StaticSourceFile, java.io.Serializable
    An abstract representation of a source file that provides access to language-neutral features. The source file can be loaded from various locations, such as from disk or from a preloaded string.
    See Also:
    Serialized Form
    • Constructor Detail

      • SourceFile

        public SourceFile​(java.lang.String fileName)
        Construct a new abstract source file.
        Parameters:
        fileName - The file name of the source file. It does not necessarily need to correspond to a real path. But it should be unique. Will appear in warning messages emitted by the compiler.
    • Method Detail

      • getLineOffset

        public int getLineOffset​(int lineno)
        Description copied from interface: StaticSourceFile
        Returns the offset of the given line number relative to the file start. Line number should be 1-based. If the source file doesn't have line information, it should return Integer.MIN_VALUE. The negative offsets will make it more obvious what happened.
        Specified by:
        getLineOffset in interface StaticSourceFile
        Parameters:
        lineno - the line of the input to get the absolute offset of.
        Returns:
        the absolute offset of the start of the provided line.
      • getCode

        public java.lang.String getCode()
                                 throws java.io.IOException
        Gets all the code in this source file.
        Throws:
        java.io.IOException
      • getCodeReader

        public java.io.Reader getCodeReader()
                                     throws java.io.IOException
        Gets a reader for the code in this source file.
        Throws:
        java.io.IOException
      • getOriginalPath

        public java.lang.String getOriginalPath()
      • setOriginalPath

        public void setOriginalPath​(java.lang.String originalPath)
      • clearCachedSource

        public void clearCachedSource()
      • getName

        public java.lang.String getName()
        Returns a unique name for the source file.
        Specified by:
        getName in interface StaticSourceFile
      • isExtern

        public boolean isExtern()
        Returns whether this is an extern.
        Specified by:
        isExtern in interface StaticSourceFile
      • getLineOfOffset

        public int getLineOfOffset​(int offset)
        Description copied from interface: StaticSourceFile
        Gets the 1-based line number of the given source offset.
        Specified by:
        getLineOfOffset in interface StaticSourceFile
        Parameters:
        offset - An absolute file offset.
        Returns:
        The 1-based line number of that offset. The behavior is undefined if this offset does not exist in the source file.
      • getColumnOfOffset

        public int getColumnOfOffset​(int offset)
        Description copied from interface: StaticSourceFile
        Gets the 0-based column number of the given source offset.
        Specified by:
        getColumnOfOffset in interface StaticSourceFile
        Parameters:
        offset - An absolute file offset.
        Returns:
        The 0-based column number of that offset. The behavior is undefined if this offset does not exist in the source file.
      • getLine

        public java.lang.String getLine​(int lineNumber)
        Gets the source line for the indicated line number.
        Parameters:
        lineNumber - the line number, 1 being the first line of the file.
        Returns:
        The line indicated. Does not include the newline at the end of the file. Returns null if it does not exist, or if there was an IO exception.
      • getRegion

        public Region getRegion​(int lineNumber)
        Get a region around the indicated line number. The exact definition of a region is implementation specific, but it must contain the line indicated by the line number. A region must not start or end by a carriage return.
        Parameters:
        lineNumber - the line number, 1 being the first line of the file.
        Returns:
        The line indicated. Returns null if it does not exist, or if there was an IO exception.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • fromFile

        public static SourceFile fromFile​(java.lang.String fileName,
                                          java.nio.charset.Charset c)
      • fromFile

        public static SourceFile fromFile​(java.lang.String fileName)
      • fromFile

        public static SourceFile fromFile​(java.io.File file,
                                          java.nio.charset.Charset c)
      • fromFile

        public static SourceFile fromFile​(java.io.File file)
      • fromCode

        public static SourceFile fromCode​(java.lang.String fileName,
                                          java.lang.String code)
      • fromCode

        public static SourceFile fromCode​(java.lang.String fileName,
                                          java.lang.String originalPath,
                                          java.lang.String code)
      • fromInputStream

        public static SourceFile fromInputStream​(java.lang.String fileName,
                                                 java.io.InputStream s)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • fromInputStream

        public static SourceFile fromInputStream​(java.lang.String fileName,
                                                 java.lang.String originalPath,
                                                 java.io.InputStream s)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • fromReader

        public static SourceFile fromReader​(java.lang.String fileName,
                                            java.io.Reader r)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • builder

        public static SourceFile.Builder builder()
        Create a new builder for source files.