getTypeRef method

TypeRef getTypeRef(
  1. Map<int, LookupValue> definitions,
  2. Map<int, int> accessibleTypes,
  3. int frameId
)

Implementation

TypeRef getTypeRef(
    Map<int, LookupValue> definitions, Map<int, int> accessibleTypes, int frameId) {
  final def = definitions[frameId]!.def;

  if (def.tag == 'primitive') {
    return TypeRef(tag: def.value.tag, value: null);
  }

  if (def.tag == 'compact') {
    final primitive = getPrimitive(definitions, def.value);
    final tag = compactTypeRefs(primitive);
    return TypeRef(tag: tag, value: null);
  }

  return accessibleTypes.containsKey(frameId)
      ? TypeRef(tag: 'perId', value: accessibleTypes[frameId]!)
      : TypeRef(tag: 'void', value: null);
}