public override void Codegen(CIntermediateLang cil, IndentingStringBuilder sb) { var ty = Thing.TryInferType(cil); var separator = CTypes.IsPointerType(ty) ? "->" : "."; var @struct = cil.SymTable.LookupStruct(ty); // TODO: Handle key not found exception var member = @struct.Members[Member]; Thing.Codegen(cil, sb); var thingVar = cil.LastUsedVar; cil.LastUsedVar = string.Format("{0}{1}{2}", thingVar, separator, member.Name); }