blob: d2213859e6aab94b861fae6bc7d413db01e880ca [file] [log] [blame]
// Copyright (c) 2020, 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.graph.proto;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.GraphLens;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
public abstract class ArgumentInfo {
static final ArgumentInfo NO_INFO =
new ArgumentInfo() {
@Override
public ArgumentInfo combine(ArgumentInfo info) {
return info;
}
@Override
public boolean isNone() {
return true;
}
@Override
public ArgumentInfo rewrittenWithLens(
AppView<AppInfoWithLiveness> appView, GraphLens graphLens, GraphLens codeLens) {
return this;
}
@Override
public boolean equals(Object obj) {
return obj == this;
}
@Override
public int hashCode() {
return System.identityHashCode(this);
}
};
public boolean isNone() {
return false;
}
public boolean isRemovedArgumentInfo() {
return false;
}
public RemovedArgumentInfo asRemovedArgumentInfo() {
return null;
}
public boolean isRemovedReceiverInfo() {
return false;
}
public boolean isRewrittenTypeInfo() {
return false;
}
public RewrittenTypeInfo asRewrittenTypeInfo() {
return null;
}
// ArgumentInfo are combined with `this` first, and the `info` argument second.
public abstract ArgumentInfo combine(ArgumentInfo info);
public abstract ArgumentInfo rewrittenWithLens(
AppView<AppInfoWithLiveness> appView, GraphLens graphLens, GraphLens codeLens);
@Override
public abstract boolean equals(Object obj);
@Override
public abstract int hashCode();
}