| // 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; | 
 |  | 
 | import static org.junit.Assert.assertNotNull; | 
 |  | 
 | import com.android.tools.r8.ToolHelper.ProcessResult; | 
 | import com.android.tools.r8.errors.Unimplemented; | 
 | import com.android.tools.r8.utils.AndroidApiLevel; | 
 | import com.android.tools.r8.utils.AndroidApp; | 
 | import com.android.tools.r8.utils.FileUtils; | 
 | import com.android.tools.r8.utils.codeinspector.CodeInspector; | 
 | import java.io.IOException; | 
 | import java.nio.file.Files; | 
 | import java.nio.file.Path; | 
 | import java.util.Set; | 
 |  | 
 | public class L8TestCompileResult extends TestCompileResult<L8TestCompileResult, L8TestRunResult> { | 
 |  | 
 |   private final String generatedKeepRules; | 
 |   private final Path mapping; | 
 |  | 
 |   public L8TestCompileResult( | 
 |       AndroidApp app, | 
 |       AndroidApiLevel apiLevel, | 
 |       String generatedKeepRules, | 
 |       Path mapping, | 
 |       TestState state) { | 
 |     super(state, app, apiLevel.getLevel(), OutputMode.DexIndexed); | 
 |     this.generatedKeepRules = generatedKeepRules; | 
 |     this.mapping = mapping; | 
 |   } | 
 |  | 
 |   @Override | 
 |   public TestDiagnosticMessages getDiagnosticMessages() { | 
 |     return state.getDiagnosticsMessages(); | 
 |   } | 
 |  | 
 |   @Override | 
 |   public Set<String> getMainDexClasses() { | 
 |     throw new Unimplemented(); | 
 |   } | 
 |  | 
 |   @Override | 
 |   public String getStdout() { | 
 |     throw new Unimplemented(); | 
 |   } | 
 |  | 
 |   @Override | 
 |   public String getStderr() { | 
 |     throw new Unimplemented(); | 
 |   } | 
 |  | 
 |   @Override | 
 |   protected L8TestRunResult createRunResult(TestRuntime runtime, ProcessResult result) { | 
 |     throw new Unimplemented(); | 
 |   } | 
 |  | 
 |   @Override | 
 |   public CodeInspector inspector() throws IOException { | 
 |     return mapping != null && mapping.toFile().exists() | 
 |         ? new CodeInspector(app, mapping) | 
 |         : super.inspector(); | 
 |   } | 
 |  | 
 |   @Override | 
 |   public L8TestCompileResult self() { | 
 |     return this; | 
 |   } | 
 |  | 
 |   public L8TestCompileResult writeGeneratedKeepRules(Path path) throws IOException { | 
 |     assertNotNull(generatedKeepRules); | 
 |     FileUtils.writeTextFile(path, generatedKeepRules); | 
 |     return self(); | 
 |   } | 
 |  | 
 |   public L8TestCompileResult writeProguardMap(Path path) throws IOException { | 
 |     assertNotNull(mapping); | 
 |     Files.copy(mapping, path); | 
 |     return self(); | 
 |   } | 
 | } |