negative_variable_dimension 진단: 가변 길이 배열의 차원은 음수면 안 돼요

negative_variable_dimension 진단: 가변 길이 배열의 차원은 음수면 안 돼요

가변 길이 배열(variable-length array)의 가변 차원(variable dimension) 값이 음수일 때 Dart 분석기가 알려주는 negative_variable_dimension 진단에 대한 설명이에요. Array.variableWithVariableDimension이나 Array.variableMulti 어노테이션에 음수 값을 넘기면 이 진단이 나타나요.

출처: negative_variable_dimension

본문

설명

분석기는 두 가지 경우에 이 진단을 만들어요.

첫 번째는 Array.variableWithVariableDimension 어노테이션에 준 가변 차원이 음수일 때예요. 가변 차원은 어노테이션의 첫 번째 인자예요.

두 번째는 Array.variableMulti 어노테이션에 준 가변 차원이 음수일 때예요. 가변 차원은 어노테이션의 variableDimension 인자에 지정돼요.

FFI에 대해 더 자세히 알고 싶다면 dart:ffi를 사용한 C interop 문서를 참고해요.

예시

다음 코드는 Array.variableWithVariableDimension 어노테이션에 가변 차원으로 -1을 줘서 이 진단을 만들어요.

import 'dart:ffi';

final class MyStruct extends Struct {
  @Array.variableWithVariableDimension(-1)
  external Array<Uint8> a0;
}

다음 코드는 Array.variableMulti 어노테이션에 가변 차원으로 -1을 줘서 이 진단을 만들어요.

import 'dart:ffi';

final class MyStruct2 extends Struct {
  @Array.variableMulti(variableDimension: -1, [1, 2])
  external Array<Array<Array<Uint8>>> a0;
}

흔한 해결 방법

가변 차원을 0이나 양수로 바꿔주면 돼요.

import 'dart:ffi';

final class MyStruct extends Struct {
  @Array.variableWithVariableDimension(1)
  external Array<Uint8> a0;
}

마찬가지로 가변 차원을 0이나 양수로 바꿔요.

import 'dart:ffi';

final class MyStruct2 extends Struct {
  @Array.variableMulti(variableDimension: 1, [1, 2])
  external Array<Array<Array<Uint8>>> a0;
}

더 알아보기