)]}'
{
  "commit": "bf2d84db8e95cf0dbf782f6609b034427ab1c07d",
  "tree": "3ef8d24241a725dc851f43eeae9163cb3411076f",
  "parents": [
    "9522f989b06c6e7eb031758e71cd1c69755e7f32"
  ],
  "author": {
    "name": "Michael Buch",
    "email": "michaelbuch12@gmail.com",
    "time": "Fri Oct 17 23:27:57 2025 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Oct 17 23:27:57 2025 +0100"
  },
  "message": "[lldb][ObjC] Consult Objective-C runtime decl vendor when completing type (#164011)\n\n(Note, this upstreams code that has been deployed on Apple\u0027s Swift LLDB\nfor many years at this point).\n\nWhen a `ValueObject` computes its \"complete type\"\n(`MaybeCalculateCompleteType`), it gives the language runtimes a chance\nto override the type known to it. The current implementation of\n`ObjCLanguageRuntime::GetRuntimeType`, however, didn\u0027t consult the\n`AppleObjCDeclVendor` to look for types.\n\nAs demonstrated in the attached test, when we don\u0027t have debug-info for\na base class type (most commonly happens when inheriting from system\nframework types) we would not be able to deduce ivars of that type.\nHowever, the runtime knows about the ivars, so we should be able to\nretrieve them.\n\nThere\u0027s still a couple of caveats for future follow-up/investigation:\n1. `frame var` isn\u0027t able to access such backing ivars explicitly (even\nif they do exist)\n2. When compiling with `-gmodules`, LLDB gets confused about what is\ncorrect source of information for these decls is.\n\nrdar://162069497",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c33760eccd12740f0c9f070b8c0486c844b881ba",
      "old_mode": 33188,
      "old_path": "lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.cpp",
      "new_id": "2b2ca080c7f55612e78927a8aeb69237978a4daa",
      "new_mode": 33188,
      "new_path": "lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.cpp"
    },
    {
      "type": "modify",
      "old_id": "45de098c15f51777598f57c7a504219959635a40",
      "old_mode": 33188,
      "old_path": "lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h",
      "new_id": "cc8281e9d1a02c2b32cd79e76b27af62e6914509",
      "new_mode": 33188,
      "new_path": "lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c7947fc138c186856fffed59536803d3e0857012",
      "new_mode": 33188,
      "new_path": "lldb/test/API/lang/objc/ivar-in-framework-base/Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "40fc6b7a689950b62dc5e57dbc6ef7dfc1c8b329",
      "new_mode": 33188,
      "new_path": "lldb/test/API/lang/objc/ivar-in-framework-base/TestIvarInFrameworkBase.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "31ceb53dc688567b5f82e51540a1513f5203401f",
      "new_mode": 33188,
      "new_path": "lldb/test/API/lang/objc/ivar-in-framework-base/lib.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e1bf80ac4bd4c9689e8cc68f47215c51b70da745",
      "new_mode": 33188,
      "new_path": "lldb/test/API/lang/objc/ivar-in-framework-base/lib.m"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1fd352ec92c54f6b894a8b4e8d61752449ec80a3",
      "new_mode": 33188,
      "new_path": "lldb/test/API/lang/objc/ivar-in-framework-base/main.m"
    }
  ]
}
