/* * Copyright 2013 Guidewire Software, Inc. */ package gw.lang.ir; import gw.lang.UnstableAPI; import java.lang.reflect.Array; @UnstableAPI public class SyntheticIRArrayType implements IRType { private IRType _componentType; public SyntheticIRArrayType(IRType componentType) { _componentType = componentType; } @Override public String getName() { return _componentType.getName() + "[]"; } @Override public String getRelativeName() { return _componentType.getRelativeName() + "[]"; } @Override public String getDescriptor() { return '[' + getComponentType().getDescriptor(); } @Override public Class getJavaClass() { return Array.newInstance(getComponentType().getJavaClass(), 0).getClass(); } @Override public String getSlashName() { return getComponentType().getSlashName() + "[]"; } @Override public IRType getArrayType() { return new SyntheticIRArrayType(this); } @Override public IRType getComponentType() { return null; } @Override public boolean isArray() { return true; } @Override public boolean isAssignableFrom(IRType otherType) { return otherType.isArray() && getComponentType().isAssignableFrom(otherType.getComponentType()); } @Override public boolean isByte() { return false; } @Override public boolean isBoolean() { return false; } @Override public boolean isShort() { return false; } @Override public boolean isChar() { return false; } @Override public boolean isInt() { return false; } @Override public boolean isLong() { return false; } @Override public boolean isFloat() { return false; } @Override public boolean isDouble() { return false; } @Override public boolean isVoid() { return false; } @Override public boolean isPrimitive() { return false; } @Override public boolean isInterface() { return false; } @Override public boolean isStructural() { return false; } @Override public boolean isStructuralAndErased( IRType ownersType ) { return false; } }