# Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# Run
#
#     dart run pkg/analyzer/tool/messages/generate.dart
#
# to regenerate messages after having edited this file.

# See `pkg/analyzer/messages.yaml` for a description of the contents
# of this file.

TransformSetErrorCode:
  conflictingKey:
    type: compileTimeError
    parameters:
      String key: the conflicting key
      String conflictingKey: the key that it conflicts with
    problemMessage: "The key '#key' can't be used when '#conflictingKey' is also used."
    hasPublishedDocs: false
  expectedPrimary:
    type: compileTimeError
    parameters: none
    problemMessage: "Expected either an identifier or a string literal."
    hasPublishedDocs: false
  incompatibleElementKind:
    type: compileTimeError
    parameters:
      String oldKind: the old kind
      String newKind: the new kind
    problemMessage: "An element of kind '#oldKind' can't be replaced by an element of kind '#newKind'."
    hasPublishedDocs: false
  invalidChangeForKind:
    type: compileTimeError
    parameters:
      String changeKind: the change kind that is invalid
      String elementKind: the element kind for the transform
    problemMessage: "A change of type '#changeKind' can't be used for an element of kind '#elementKind'."
    hasPublishedDocs: false
  invalidCharacter:
    type: compileTimeError
    parameters:
      String text: the character that is invalid
    problemMessage: "Invalid character '#text'."
    hasPublishedDocs: false
  invalidKey:
    type: compileTimeError
    parameters:
      String keyType: the actual type of the key
    problemMessage: "Keys must be of type 'String' but found the type '#keyType'."
    hasPublishedDocs: false
  invalidRequiredIf:
    type: compileTimeError
    parameters: none
    problemMessage: "The key 'requiredIf' can only be used with optional named parameters."
    hasPublishedDocs: false
  invalidValue:
    type: compileTimeError
    parameters:
      String key: the key with which the value is associated
      String expectedType: the expected type of the value
      String actualType: the actual type of the value
    problemMessage: "The value of '#key' should be of type '#expectedType' but is of type '#actualType'."
    hasPublishedDocs: false
  invalidParameterStyle:
    type: compileTimeError
    parameters:
      String validStyles: the list of valid parameter styles
    problemMessage: "The parameter style must be one of the following: #validStyles."
    hasPublishedDocs: false
  invalidValueOneOf:
    type: compileTimeError
    parameters:
      String key: the key with which the value is associated
      String allowedValues: the allowed values as a comma-separated list
    problemMessage: "The value of '#key' must be one of the following: '#allowedValues'."
    hasPublishedDocs: false
  missingKey:
    type: compileTimeError
    parameters:
      String key: the missing key
    problemMessage: "Missing the required key '#key'."
    hasPublishedDocs: false
  missingOneOfMultipleKeys:
    type: compileTimeError
    parameters:
      String validKeys: the list of valid keys
    problemMessage: "Exactly one of the following keys must be provided: #validKeys."
    hasPublishedDocs: false
  missingTemplateEnd:
    type: compileTimeError
    parameters: none
    problemMessage: "Missing the end brace for the template."
    hasPublishedDocs: false
  missingToken:
    type: compileTimeError
    parameters:
      String validKinds: a description of the expected kinds of tokens
    problemMessage: "Expected to find #validKinds."
    hasPublishedDocs: false
  missingUri:
    type: compileTimeError
    parameters: none
    problemMessage: "At least one URI must be provided."
    hasPublishedDocs: false
  undefinedVariable:
    type: compileTimeError
    parameters:
      String key: the missing key
    problemMessage: "The variable '#key' isn't defined."
    hasPublishedDocs: false
  unexpectedTransformSetToken:
    type: compileTimeError
    parameters:
      String tokenKind: the token that was unexpectedly found
    problemMessage: "Didn't expect to find #tokenKind."
    hasPublishedDocs: false
  unknownAccessor:
    type: compileTimeError
    parameters:
      String accessor: a description of the expected kind of token
    problemMessage: "The accessor '#accessor' is invalid."
    hasPublishedDocs: false
  unsupportedKey:
    type: compileTimeError
    parameters:
      String key: the unsupported key
    problemMessage: "The key '#key' isn't supported."
    hasPublishedDocs: false
  unsupportedStatic:
    type: compileTimeError
    parameters: none
    problemMessage: "The key 'static' is only supported for elements in a class, enum, extension, or mixin."
    hasPublishedDocs: false
  unsupportedVersion:
    type: compileTimeError
    parameters: none
    problemMessage: "Only version '1' is supported at this time."
    hasPublishedDocs: false
  wrongToken:
    type: compileTimeError
    parameters:
      String validKinds: a description of the expected kind of token
      String actualKind: a description of the actual kind of token
    problemMessage: "Expected to find #validKinds, but found #actualKind."
    hasPublishedDocs: false
  yamlSyntaxError:
    type: compileTimeError
    parameters:
      String message: the message produced by the YAML parser
    problemMessage: "Parse error: #message"
    hasPublishedDocs: false
