Ошибка LLVM при сборке на устройстве, но не в симуляторе

Когда я пытаюсь построить свою тестовую цель на своем iPad1 (4.3.5) или iPhone4 (4.3.5), я получаю следующую ошибку из Xcode 4 (Build 4A304a):

Internal compiler error: tree check: expected tree that contains 'decl with visibility' structure, have 'const_decl' in c_common_truthvalue_conversion

Но не тогда, когда Test Target переключается на встроенный симулятор.

Строка кода, которая скрывается,

GHAssertNotNULL(xxxObject, @"xxxObject could not be created");

(объекты были переименованы, чтобы защитить невинных;-)) Но я могу сказать, что это одиночка.

Я ищу в Google и не получил ничего релевантного для этой ошибки.

Заранее спасибо, Ян.

1 ответ

Я испытал ту же ошибку компилятора:

internal compiler error: tree check: expected tree that contains 'decl with visibility' structure, have 'const_decl'  in c_common_truthvalue_conversion, at c-common.c:2836

Использование Xcode 4.1 с GHUnitIOS-0.4.32 (и GHUnitIOS-0.4.31) при сборке для устройств iOS. Обратите внимание, что нет проблем при сборке симулятора.

Ошибки компилятора включали вызовы GHAssertNotEqualObjects а также GHAssertNotEquals,

Шаблон кода, который я использовал, когда получил ошибку компилятора, был следующим:

- (void) test_isEqual {
    SomeObject *foo = [[SomeObject alloc] initWithValue: 1];
    SomeObject *bar = [[SomeObject alloc] initWithValue: 2];

    GHAssertNotEquals(bar, foo, @"Different Objects, different values - different pointers");
    GHAssertNotEqualObjects(bar, foo, @"Different Objects, different values - different pointers (calls isEqual)");
}

Я смог скомпилировать код со следующей модификацией:

- (void) test_isEqual {
    NSString *comment;
    SomeObject *foo = [[SomeObject alloc] initWithValue: 1];
    SomeObject *bar = [[SomeObject alloc] initWithValue: 2];

    comment = @"Different Objects, different values - different pointers";
    GHAssertNotEquals(bar, foo, comment);

    comment = @"Different Objects, different values - different pointers (calls isEqual)";
    GHAssertNotEqualObjects(bar, foo, comment);
}

Обратите внимание, что звонки на GHAssertEqualObjects, GHAssertEqualStrings, GHAssertEquals, GHAssertFalse, GHAssertNil, GHAssertNotNil, а также GHAssertTrue использование const NSString, то есть @"some string", не вызывало ошибку компиляции.

Глядя в #define GHAssertNotEquals(a1, a2, description, ...) а также #define GHAssertEqualObjects(a1, a2, description, ...) и их использование description, оба зовут GHComposeString(description, ##__VA_ARGS__), но так же и другие макросы, которые работают.

Другие вопросы по тегам