blob: a0a58cc828059a7380fc507ca1f8656e41b9f505 [file] [log] [blame]
// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
/**
* Interface for providing a custom source file to the compiler.
*
* <p>The source file will become the inserted source file attribute in all classes in the residual
* output program. The source file attribute is present in the stacktraces computed by the JVM and
* DEX runtimes, thus it can be used to identify builds.
*/
@Keep
@FunctionalInterface
public interface SourceFileProvider {
/**
* Return the source file content.
*
* @param environment An environment of values available for use when defining the source file.
*/
String get(SourceFileEnvironment environment);
/**
* Allow producing outputs that might not always include the source file in stack traces.
*
* <p>Note that this does not affect the ability to retrace a stack trace. It is indented to
* ensure that the non-original/residual source file attribute will be printed in all stack traces
* on the supported VMs.
*
* @return True if the compiler may discard source file information (default false).
*/
default boolean allowDiscardingSourceFile() {
return false;
}
}