44 internal const string ContainerTypeName =
"__<Unloadable>";
46 readonly
Type missingType;
55 base(context,
TypeFlags.None, RuntimeJavaType.UnloadableModifiersHack, name)
66 this(context, missingType.FullName)
68 this.missingType = missingType;
80 this.customModifier = customModifier;
83 internal override RuntimeJavaType BaseTypeWrapper =>
null;
89 var tw = loader.TryLoadClassByName(this.
Name);
96 internal override string SigName
101 if (name.StartsWith(
"["))
104 return "L" + name +
";";
110 throw new InvalidOperationException(
"LazyPublishMembers called on UnloadableTypeWrapper: " +
Name);
113 internal override Type TypeAsTBD =>
throw new InvalidOperationException(
"get_Type called on UnloadableTypeWrapper: " +
Name);
115 internal override RuntimeJavaType[] Interfaces
120 if (missingType !=
null)
122 Context.StaticCompiler.IssueMissingTypeMessage(missingType);
123 return Array.Empty<RuntimeJavaType>();
127 throw new InvalidOperationException(
"get_Interfaces called on UnloadableTypeWrapper: " +
Name);
131 internal override RuntimeJavaType[] InnerClasses =>
throw new InvalidOperationException(
"get_InnerClasses called on UnloadableTypeWrapper: " +
Name);
133 internal override RuntimeJavaType DeclaringTypeWrapper =>
throw new InvalidOperationException(
"get_DeclaringTypeWrapper called on UnloadableTypeWrapper: " +
Name);
135 internal override void Finish()
137 throw new InvalidOperationException(
"Finish called on UnloadableTypeWrapper: " +
Name);
142 internal Type CustomModifier => customModifier;
144 internal void SetCustomModifier(
Type type)
146 this.customModifier = type;
151 internal Type GetCustomModifier(RuntimeJavaTypeFactory context)
154 return customModifier ?? (customModifier = context.DefineUnloadable(this.
Name));
157 internal override void EmitCheckcast(CodeEmitter ilgen)
159 throw new InvalidOperationException(
"EmitCheckcast called on UnloadableTypeWrapper: " +
Name);
162 internal override void EmitInstanceOf(CodeEmitter ilgen)
164 throw new InvalidOperationException(
"EmitInstanceOf called on UnloadableTypeWrapper: " +
Name);
Maintains services relevant to an instane of the IKVM runtime.