| // Copyright (c) 2018, 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.cf; |
| |
| public class AlwaysNullGetItemTest { |
| public static void main(String[] args) { |
| try { |
| System.out.println(foo()); |
| System.out.println(bar()); |
| System.out.println(hello().hello()); |
| System.out.println(goodbye().hello()); |
| throw new RuntimeException("Expected NullPointerException"); |
| } catch (NullPointerException e) { |
| System.out.println("NullPointerException"); |
| } |
| } |
| |
| private static Object foo() { |
| return ((Object[]) null)[0]; |
| } |
| |
| private static Object bar() { |
| return getObjectArray()[0]; |
| } |
| |
| private static A hello() { |
| return getTypedArray()[0].hello(); |
| } |
| |
| private static A goodbye() { |
| return getTypedArray()[0].goodbye(); |
| } |
| |
| private static Object[] getObjectArray() { |
| return null; |
| } |
| |
| private static A[] getTypedArray() { |
| return null; |
| } |
| |
| private static class A { |
| A hello() { |
| return this; |
| } |
| |
| A goodbye() { |
| return null; |
| } |
| } |
| } |