sdk_version_bool_operator_in_const_context
sdk_version_bool_operator_in_const_context
Dart 분석기(analyzer)가 상수 문맥(constant context)에서 bool 타입에 &, |, ^ 연산자를 사용할 때 내보내는 진단이에요. 이 연산자 사용법은 버전 2.3.2부터 지원되었기 때문에, 그보다 오래된 SDK에서도 돌아가야 하는 코드라면 이 진단이 나타나요.
본문
bool 타입 피연산자에 대한 '{0}' 연산자의 사용은 버전 2.3.2까지 지원되지 않았지만, 이 코드는 더 이전 버전에서도 실행될 수 있어야 합니다.
설명
analyzer는 SDK 제약 조건(SDK constraint)의 하한이 2.3.2보다 낮은 코드에서 bool 클래스에 대한 &, |, ^ 연산자를 상수 문맥 안에서 사용하는 것을 발견하면 이 진단을 생성해요. 상수 문맥은 const 키워드가 생략된 것으로 간주되고 그 안의 모든 것이 상수여야 하는 코드 영역을 말해요. 이런 연산자를 상수 문맥에서 사용하는 것은 이전 버전에서는 지원되지 않았으므로, 이 코드는 이전 버전의 SDK에서는 실행되지 못해요.
예시
다음은 하한이 2.3.2보다 낮은 SDK 제약 조건을 정의하는 pubspec의 예시예요.
environment:
sdk: '>=2.1.0 <2.4.0'
그 pubspec을 가진 패키지에서는 다음과 같은 코드가 이 진단을 만들어 내요.
const bool a = true;
const bool b = false;
const bool c = a & b;
일반적인 해결 방법
이전 버전의 SDK를 지원할 필요가 없다면 SDK 제약 조건을 올려서 이 연산자를 사용할 수 있게 해 주세요.
environment:
sdk: '>=2.3.2 <2.4.0'
이전 버전의 SDK를 지원해야 한다면, 이 연산자를 사용하지 않도록 코드를 다시 쓰거나, 표현식이 상수 문맥에 있지 않도록 코드를 바꿔 주세요.
const bool a = true;
const bool b = false;
bool c = a & b;