| // Copyright (c) 2015, 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. | |
| // | |
| // This file has been automatically generated. Please do not edit it manually. | |
| // To regenerate the file, use the SDK script | |
| // "pkg/analyzer/tool/summary/generate.dart $IDL_FILE_PATH", | |
| // or "pkg/analyzer/tool/generate_files" for the analyzer package IDL/sources. | |
| /// Enum of declaration kinds in available files. | |
| enum AvailableDeclarationKind : byte { | |
| CLASS, | |
| CLASS_TYPE_ALIAS, | |
| CONSTRUCTOR, | |
| ENUM, | |
| ENUM_CONSTANT, | |
| FUNCTION, | |
| FUNCTION_TYPE_ALIAS, | |
| GETTER, | |
| MIXIN, | |
| SETTER, | |
| VARIABLE | |
| } | |
| /// Enum used to indicate the kind of an entity reference. | |
| enum EntityRefKind : byte { | |
| /// The entity represents a named type. | |
| named, | |
| /// The entity represents a generic function type. | |
| genericFunctionType, | |
| /// The entity represents a function type that was synthesized by a LUB | |
| /// computation. | |
| syntheticFunction | |
| } | |
| /// Enum representing nullability suffixes in summaries. | |
| /// | |
| /// This enum is similar to [NullabilitySuffix], but the order is different so | |
| /// that [EntityRefNullabilitySuffix.starOrIrrelevant] can be the default. | |
| enum EntityRefNullabilitySuffix : byte { | |
| /// An indication that the canonical representation of the type under | |
| /// consideration ends with `*`. Types having this nullability suffix are | |
| /// called "legacy types"; it has not yet been determined whether they should | |
| /// be unioned with the Null type. | |
| /// | |
| /// Also used in circumstances where no nullability suffix information is | |
| /// needed. | |
| starOrIrrelevant, | |
| /// An indication that the canonical representation of the type under | |
| /// consideration ends with `?`. Types having this nullability suffix should | |
| /// be interpreted as being unioned with the Null type. | |
| question, | |
| /// An indication that the canonical representation of the type under | |
| /// consideration does not end with either `?` or `*`. | |
| none | |
| } | |
| /// Enum used to indicate the kind of a name in index. | |
| enum IndexNameKind : byte { | |
| /// A top-level element. | |
| topLevel, | |
| /// A class member. | |
| classMember | |
| } | |
| /// Enum used to indicate the kind of an index relation. | |
| enum IndexRelationKind : byte { | |
| /// Left: class. | |
| /// Is ancestor of (is extended or implemented, directly or indirectly). | |
| /// Right: other class declaration. | |
| IS_ANCESTOR_OF, | |
| /// Left: class. | |
| /// Is extended by. | |
| /// Right: other class declaration. | |
| IS_EXTENDED_BY, | |
| /// Left: class. | |
| /// Is implemented by. | |
| /// Right: other class declaration. | |
| IS_IMPLEMENTED_BY, | |
| /// Left: class. | |
| /// Is mixed into. | |
| /// Right: other class declaration. | |
| IS_MIXED_IN_BY, | |
| /// Left: method, property accessor, function, variable. | |
| /// Is invoked at. | |
| /// Right: location. | |
| IS_INVOKED_BY, | |
| /// Left: any element. | |
| /// Is referenced (and not invoked, read/written) at. | |
| /// Right: location. | |
| IS_REFERENCED_BY, | |
| /// Left: unresolved member name. | |
| /// Is read at. | |
| /// Right: location. | |
| IS_READ_BY, | |
| /// Left: unresolved member name. | |
| /// Is both read and written at. | |
| /// Right: location. | |
| IS_READ_WRITTEN_BY, | |
| /// Left: unresolved member name. | |
| /// Is written at. | |
| /// Right: location. | |
| IS_WRITTEN_BY | |
| } | |
| /// When we need to reference a synthetic element in [PackageIndex] we use a | |
| /// value of this enum to specify which kind of the synthetic element we | |
| /// actually reference. | |
| enum IndexSyntheticElementKind : byte { | |
| /// Not a synthetic element. | |
| notSynthetic, | |
| /// The unnamed synthetic constructor a class element. | |
| constructor, | |
| /// The synthetic field element. | |
| field, | |
| /// The synthetic getter of a property introducing element. | |
| getter, | |
| /// The synthetic setter of a property introducing element. | |
| setter, | |
| /// The synthetic top-level variable element. | |
| topLevelVariable, | |
| /// The synthetic `loadLibrary` element. | |
| loadLibrary, | |
| /// The synthetic `index` getter of an enum. | |
| enumIndex, | |
| /// The synthetic `values` getter of an enum. | |
| enumValues, | |
| /// The synthetic `toString` method of an enum. | |
| enumToString, | |
| /// The containing unit itself. | |
| unit | |
| } | |
| /// Types of comments. | |
| enum LinkedNodeCommentType : byte { | |
| block, | |
| documentation, | |
| endOfLine | |
| } | |
| /// Kinds of formal parameters. | |
| enum LinkedNodeFormalParameterKind : byte { | |
| requiredPositional, | |
| optionalPositional, | |
| optionalNamed, | |
| requiredNamed | |
| } | |
| /// Kinds of [LinkedNode]. | |
| enum LinkedNodeKind : byte { | |
| adjacentStrings, | |
| annotation, | |
| argumentList, | |
| asExpression, | |
| assertInitializer, | |
| assertStatement, | |
| assignmentExpression, | |
| awaitExpression, | |
| binaryExpression, | |
| block, | |
| blockFunctionBody, | |
| booleanLiteral, | |
| breakStatement, | |
| cascadeExpression, | |
| catchClause, | |
| classDeclaration, | |
| classTypeAlias, | |
| comment, | |
| commentReference, | |
| compilationUnit, | |
| conditionalExpression, | |
| configuration, | |
| constructorDeclaration, | |
| constructorFieldInitializer, | |
| constructorName, | |
| continueStatement, | |
| declaredIdentifier, | |
| defaultFormalParameter, | |
| doubleLiteral, | |
| doStatement, | |
| dottedName, | |
| emptyFunctionBody, | |
| emptyStatement, | |
| enumConstantDeclaration, | |
| enumDeclaration, | |
| exportDirective, | |
| expressionFunctionBody, | |
| expressionStatement, | |
| extendsClause, | |
| fieldDeclaration, | |
| fieldFormalParameter, | |
| formalParameterList, | |
| forEachPartsWithDeclaration, | |
| forEachPartsWithIdentifier, | |
| forElement, | |
| forPartsWithDeclarations, | |
| forPartsWithExpression, | |
| forStatement, | |
| functionDeclaration, | |
| functionDeclarationStatement, | |
| functionExpression, | |
| functionExpressionInvocation, | |
| functionTypeAlias, | |
| functionTypedFormalParameter, | |
| genericFunctionType, | |
| genericTypeAlias, | |
| hideCombinator, | |
| ifElement, | |
| ifStatement, | |
| implementsClause, | |
| importDirective, | |
| instanceCreationExpression, | |
| indexExpression, | |
| integerLiteral, | |
| interpolationExpression, | |
| interpolationString, | |
| isExpression, | |
| label, | |
| labeledStatement, | |
| libraryDirective, | |
| libraryIdentifier, | |
| listLiteral, | |
| mapLiteralEntry, | |
| methodDeclaration, | |
| methodInvocation, | |
| mixinDeclaration, | |
| namedExpression, | |
| nativeClause, | |
| nativeFunctionBody, | |
| nullLiteral, | |
| onClause, | |
| parenthesizedExpression, | |
| partDirective, | |
| partOfDirective, | |
| postfixExpression, | |
| prefixExpression, | |
| prefixedIdentifier, | |
| propertyAccess, | |
| redirectingConstructorInvocation, | |
| rethrowExpression, | |
| returnStatement, | |
| setOrMapLiteral, | |
| showCombinator, | |
| simpleFormalParameter, | |
| simpleIdentifier, | |
| simpleStringLiteral, | |
| spreadElement, | |
| stringInterpolation, | |
| superConstructorInvocation, | |
| superExpression, | |
| switchCase, | |
| switchDefault, | |
| switchStatement, | |
| symbolLiteral, | |
| thisExpression, | |
| throwExpression, | |
| topLevelVariableDeclaration, | |
| tryStatement, | |
| typeArgumentList, | |
| typeName, | |
| typeParameter, | |
| typeParameterList, | |
| variableDeclaration, | |
| variableDeclarationList, | |
| variableDeclarationStatement, | |
| whileStatement, | |
| withClause, | |
| yieldStatement | |
| } | |
| /// Kinds of [LinkedNodeType]s. | |
| enum LinkedNodeTypeKind : byte { | |
| bottom, | |
| dynamic_, | |
| function, | |
| interface, | |
| typeParameter, | |
| void_ | |
| } | |
| /// Enum used to indicate the kind of entity referred to by a | |
| /// [LinkedReference]. | |
| enum ReferenceKind : byte { | |
| /// The entity is a class or enum. | |
| classOrEnum, | |
| /// The entity is a constructor. | |
| constructor, | |
| /// The entity is a getter or setter inside a class. Note: this is used in | |
| /// the case where a constant refers to a static const declared inside a | |
| /// class. | |
| propertyAccessor, | |
| /// The entity is a method. | |
| method, | |
| /// The entity is a typedef. | |
| typedef, | |
| /// The entity is a local function. | |
| function, | |
| /// The entity is a local variable. | |
| variable, | |
| /// The entity is a top level function. | |
| topLevelFunction, | |
| /// The entity is a top level getter or setter. | |
| topLevelPropertyAccessor, | |
| /// The entity is a prefix. | |
| prefix, | |
| /// The entity being referred to does not exist. | |
| unresolved, | |
| /// The entity is a typedef expressed using generic function type syntax. | |
| genericFunctionTypedef | |
| } | |
| /// Enum used to indicate the kind of the error during top-level inference. | |
| enum TopLevelInferenceErrorKind : byte { | |
| assignment, | |
| instanceGetter, | |
| dependencyCycle, | |
| overrideConflictFieldType, | |
| overrideConflictReturnType, | |
| overrideConflictParameterType | |
| } | |
| /// Enum used to indicate the style of a typedef. | |
| enum TypedefStyle : byte { | |
| /// A typedef that defines a non-generic function type. The syntax is | |
| /// ``` | |
| /// 'typedef' returnType? identifier typeParameters? formalParameterList ';' | |
| /// ``` | |
| /// The typedef can have type parameters associated with it, but the function | |
| /// type that results from applying type arguments does not. | |
| functionType, | |
| /// A typedef expressed using generic function type syntax. The syntax is | |
| /// ``` | |
| /// typeAlias ::= | |
| /// 'typedef' identifier typeParameters? '=' genericFunctionType ';' | |
| /// genericFunctionType ::= | |
| /// returnType? 'Function' typeParameters? parameterTypeList | |
| /// ``` | |
| /// Both the typedef itself and the function type that results from applying | |
| /// type arguments can have type parameters. | |
| genericFunctionType | |
| } | |
| /// Enum used to indicate the kind of an constructor initializer. | |
| enum UnlinkedConstructorInitializerKind : byte { | |
| /// Initialization of a field. | |
| field, | |
| /// Invocation of a constructor in the same class. | |
| thisInvocation, | |
| /// Invocation of a superclass' constructor. | |
| superInvocation, | |
| /// Invocation of `assert`. | |
| assertInvocation | |
| } | |
| /// Enum used to indicate the kind of an executable. | |
| enum UnlinkedExecutableKind : byte { | |
| /// Executable is a function or method. | |
| functionOrMethod, | |
| /// Executable is a getter. | |
| getter, | |
| /// Executable is a setter. | |
| setter, | |
| /// Executable is a constructor. | |
| constructor | |
| } | |
| /// Enum representing the various kinds of assignment operations combined | |
| /// with: | |
| /// [UnlinkedExprOperation.assignToRef], | |
| /// [UnlinkedExprOperation.assignToProperty], | |
| /// [UnlinkedExprOperation.assignToIndex]. | |
| enum UnlinkedExprAssignOperator : byte { | |
| /// Perform simple assignment `target = operand`. | |
| assign, | |
| /// Perform `target ??= operand`. | |
| ifNull, | |
| /// Perform `target *= operand`. | |
| multiply, | |
| /// Perform `target /= operand`. | |
| divide, | |
| /// Perform `target ~/= operand`. | |
| floorDivide, | |
| /// Perform `target %= operand`. | |
| modulo, | |
| /// Perform `target += operand`. | |
| plus, | |
| /// Perform `target -= operand`. | |
| minus, | |
| /// Perform `target <<= operand`. | |
| shiftLeft, | |
| /// Perform `target >>= operand`. | |
| shiftRight, | |
| /// Perform `target &= operand`. | |
| bitAnd, | |
| /// Perform `target ^= operand`. | |
| bitXor, | |
| /// Perform `target |= operand`. | |
| bitOr, | |
| /// Perform `++target`. | |
| prefixIncrement, | |
| /// Perform `--target`. | |
| prefixDecrement, | |
| /// Perform `target++`. | |
| postfixIncrement, | |
| /// Perform `target++`. | |
| postfixDecrement | |
| } | |
| /// Enum representing the various kinds of operations which may be performed to | |
| /// in an expression. These options are assumed to execute in the | |
| /// context of a stack which is initially empty. | |
| enum UnlinkedExprOperation : byte { | |
| /// Push the next value from [UnlinkedExpr.ints] (a 32-bit unsigned integer) | |
| /// onto the stack. | |
| /// | |
| /// Note that Dart supports integers larger than 32 bits; these are | |
| /// represented by composing 32-bit values using the [pushLongInt] operation. | |
| pushInt, | |
| /// Get the number of components from [UnlinkedExpr.ints], then do this number | |
| /// of times the following operations: multiple the current value by 2^32, | |
| /// "or" it with the next value in [UnlinkedExpr.ints]. The initial value is | |
| /// zero. Push the result into the stack. | |
| pushLongInt, | |
| /// Push the next value from [UnlinkedExpr.doubles] (a double precision | |
| /// floating point value) onto the stack. | |
| pushDouble, | |
| /// Push the constant `true` onto the stack. | |
| pushTrue, | |
| /// Push the constant `false` onto the stack. | |
| pushFalse, | |
| /// Push the next value from [UnlinkedExpr.strings] onto the stack. | |
| pushString, | |
| /// Pop the top n values from the stack (where n is obtained from | |
| /// [UnlinkedExpr.ints]), convert them to strings (if they aren't already), | |
| /// concatenate them into a single string, and push it back onto the stack. | |
| /// | |
| /// This operation is used to represent constants whose value is a literal | |
| /// string containing string interpolations. | |
| concatenate, | |
| /// Get the next value from [UnlinkedExpr.strings], convert it to a symbol, | |
| /// and push it onto the stack. | |
| makeSymbol, | |
| /// Push the constant `null` onto the stack. | |
| pushNull, | |
| /// Push the value of the function parameter with the name obtained from | |
| /// [UnlinkedExpr.strings]. | |
| pushParameter, | |
| /// Evaluate a (potentially qualified) identifier expression and push the | |
| /// resulting value onto the stack. The identifier to be evaluated is | |
| /// obtained from [UnlinkedExpr.references]. | |
| /// | |
| /// This operation is used to represent the following kinds of constants | |
| /// (which are indistinguishable from an unresolved AST alone): | |
| /// | |
| /// - A qualified reference to a static constant variable (e.g. `C.v`, where | |
| /// C is a class and `v` is a constant static variable in `C`). | |
| /// - An identifier expression referring to a constant variable. | |
| /// - A simple or qualified identifier denoting a class or type alias. | |
| /// - A simple or qualified identifier denoting a top-level function or a | |
| /// static method. | |
| pushReference, | |
| /// Pop the top value from the stack, extract the value of the property with | |
| /// the name obtained from [UnlinkedExpr.strings], and push the result back | |
| /// onto the stack. | |
| extractProperty, | |
| /// Pop the top `n` values from the stack (where `n` is obtained from | |
| /// [UnlinkedExpr.ints]) into a list (filled from the end) and take the next | |
| /// `n` values from [UnlinkedExpr.strings] and use the lists of names and | |
| /// values to create named arguments. Then pop the top `m` values from the | |
| /// stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled | |
| /// from the end) and use them as positional arguments. Use the lists of | |
| /// positional and names arguments to invoke a constant constructor obtained | |
| /// from [UnlinkedExpr.references], and push the resulting value back onto the | |
| /// stack. | |
| /// | |
| /// Arguments are skipped, and `0` are specified as the numbers of arguments | |
| /// on the stack, if the expression is not a constant. We store expression of | |
| /// variable initializers to perform top-level inference, and arguments are | |
| /// never used to infer types. | |
| /// | |
| /// Note that for an invocation of the form `const a.b(...)` (where no type | |
| /// arguments are specified), it is impossible to tell from the unresolved AST | |
| /// alone whether `a` is a class name and `b` is a constructor name, or `a` is | |
| /// a prefix name and `b` is a class name. For consistency between AST based | |
| /// and elements based summaries, references to default constructors are | |
| /// always recorded as references to corresponding classes. | |
| invokeConstructor, | |
| /// Pop the top n values from the stack (where n is obtained from | |
| /// [UnlinkedExpr.ints]), place them in a [List], and push the result back | |
| /// onto the stack. The type parameter for the [List] is implicitly | |
| /// `dynamic`. | |
| makeUntypedList, | |
| /// Pop the top 2*n values from the stack (where n is obtained from | |
| /// [UnlinkedExpr.ints]), interpret them as key/value pairs, place them in a | |
| /// [Map], and push the result back onto the stack. The two type parameters | |
| /// for the [Map] are implicitly `dynamic`. | |
| /// | |
| /// To be replaced with [makeUntypedSetOrMap] for unified collections. | |
| makeUntypedMap, | |
| /// Pop the top n values from the stack (where n is obtained from | |
| /// [UnlinkedExpr.ints]), place them in a [List], and push the result back | |
| /// onto the stack. The type parameter for the [List] is obtained from | |
| /// [UnlinkedExpr.references]. | |
| makeTypedList, | |
| /// Pop the top 2*n values from the stack (where n is obtained from | |
| /// [UnlinkedExpr.ints]), interpret them as key/value pairs, place them in a | |
| /// [Map], and push the result back onto the stack. The two type parameters | |
| /// for the [Map] are obtained from [UnlinkedExpr.references]. | |
| /// | |
| /// To be replaced with [makeTypedMap2] for unified collections. This is not | |
| /// forwards compatible with [makeTypedMap2] because it expects | |
| /// [CollectionElement]s instead of pairs of [Expression]s. | |
| makeTypedMap, | |
| /// Pop the top 2 values from the stack, evaluate `v1 == v2`, and push the | |
| /// result back onto the stack. | |
| equal, | |
| /// Pop the top 2 values from the stack, evaluate `v1 != v2`, and push the | |
| /// result back onto the stack. | |
| notEqual, | |
| /// Pop the top value from the stack, compute its boolean negation, and push | |
| /// the result back onto the stack. | |
| not, | |
| /// Pop the top 2 values from the stack, compute `v1 && v2`, and push the | |
| /// result back onto the stack. | |
| and, | |
| /// Pop the top 2 values from the stack, compute `v1 || v2`, and push the | |
| /// result back onto the stack. | |
| or, | |
| /// Pop the top value from the stack, compute its integer complement, and push | |
| /// the result back onto the stack. | |
| complement, | |
| /// Pop the top 2 values from the stack, compute `v1 ^ v2`, and push the | |
| /// result back onto the stack. | |
| bitXor, | |
| /// Pop the top 2 values from the stack, compute `v1 & v2`, and push the | |
| /// result back onto the stack. | |
| bitAnd, | |
| /// Pop the top 2 values from the stack, compute `v1 | v2`, and push the | |
| /// result back onto the stack. | |
| bitOr, | |
| /// Pop the top 2 values from the stack, compute `v1 >> v2`, and push the | |
| /// result back onto the stack. | |
| bitShiftRight, | |
| /// Pop the top 2 values from the stack, compute `v1 << v2`, and push the | |
| /// result back onto the stack. | |
| bitShiftLeft, | |
| /// Pop the top 2 values from the stack, compute `v1 + v2`, and push the | |
| /// result back onto the stack. | |
| add, | |
| /// Pop the top value from the stack, compute its integer negation, and push | |
| /// the result back onto the stack. | |
| negate, | |
| /// Pop the top 2 values from the stack, compute `v1 - v2`, and push the | |
| /// result back onto the stack. | |
| subtract, | |
| /// Pop the top 2 values from the stack, compute `v1 * v2`, and push the | |
| /// result back onto the stack. | |
| multiply, | |
| /// Pop the top 2 values from the stack, compute `v1 / v2`, and push the | |
| /// result back onto the stack. | |
| divide, | |
| /// Pop the top 2 values from the stack, compute `v1 ~/ v2`, and push the | |
| /// result back onto the stack. | |
| floorDivide, | |
| /// Pop the top 2 values from the stack, compute `v1 > v2`, and push the | |
| /// result back onto the stack. | |
| greater, | |
| /// Pop the top 2 values from the stack, compute `v1 < v2`, and push the | |
| /// result back onto the stack. | |
| less, | |
| /// Pop the top 2 values from the stack, compute `v1 >= v2`, and push the | |
| /// result back onto the stack. | |
| greaterEqual, | |
| /// Pop the top 2 values from the stack, compute `v1 <= v2`, and push the | |
| /// result back onto the stack. | |
| lessEqual, | |
| /// Pop the top 2 values from the stack, compute `v1 % v2`, and push the | |
| /// result back onto the stack. | |
| modulo, | |
| /// Pop the top 3 values from the stack, compute `v1 ? v2 : v3`, and push the | |
| /// result back onto the stack. | |
| conditional, | |
| /// Pop from the stack `value` and get the next `target` reference from | |
| /// [UnlinkedExpr.references] - a top-level variable (prefixed or not), an | |
| /// assignable field of a class (prefixed or not), or a sequence of getters | |
| /// ending with an assignable property `a.b.b.c.d.e`. In general `a.b` cannot | |
| /// not be distinguished between: `a` is a prefix and `b` is a top-level | |
| /// variable; or `a` is an object and `b` is the name of a property. Perform | |
| /// `reference op= value` where `op` is the next assignment operator from | |
| /// [UnlinkedExpr.assignmentOperators]. Push `value` back into the stack. | |
| /// | |
| /// If the assignment operator is a prefix/postfix increment/decrement, then | |
| /// `value` is not present in the stack, so it should not be popped and the | |
| /// corresponding value of the `target` after/before update is pushed into the | |
| /// stack instead. | |
| assignToRef, | |
| /// Pop from the stack `target` and `value`. Get the name of the property | |
| /// from `UnlinkedConst.strings` and assign the `value` to the named property | |
| /// of the `target`. This operation is used when we know that the `target` | |
| /// is an object reference expression, e.g. `new Foo().a.b.c` or `a.b[0].c.d`. | |
| /// Perform `target.property op= value` where `op` is the next assignment | |
| /// operator from [UnlinkedExpr.assignmentOperators]. Push `value` back into | |
| /// the stack. | |
| /// | |
| /// If the assignment operator is a prefix/postfix increment/decrement, then | |
| /// `value` is not present in the stack, so it should not be popped and the | |
| /// corresponding value of the `target` after/before update is pushed into the | |
| /// stack instead. | |
| assignToProperty, | |
| /// Pop from the stack `index`, `target` and `value`. Perform | |
| /// `target[index] op= value` where `op` is the next assignment operator from | |
| /// [UnlinkedExpr.assignmentOperators]. Push `value` back into the stack. | |
| /// | |
| /// If the assignment operator is a prefix/postfix increment/decrement, then | |
| /// `value` is not present in the stack, so it should not be popped and the | |
| /// corresponding value of the `target` after/before update is pushed into the | |
| /// stack instead. | |
| assignToIndex, | |
| /// Pop from the stack `index` and `target`. Push into the stack the result | |
| /// of evaluation of `target[index]`. | |
| extractIndex, | |
| /// Pop the top `n` values from the stack (where `n` is obtained from | |
| /// [UnlinkedExpr.ints]) into a list (filled from the end) and take the next | |
| /// `n` values from [UnlinkedExpr.strings] and use the lists of names and | |
| /// values to create named arguments. Then pop the top `m` values from the | |
| /// stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled | |
| /// from the end) and use them as positional arguments. Use the lists of | |
| /// positional and names arguments to invoke a method (or a function) with | |
| /// the reference from [UnlinkedExpr.references]. If `k` is nonzero (where | |
| /// `k` is obtained from [UnlinkedExpr.ints]), obtain `k` type arguments from | |
| /// [UnlinkedExpr.references] and use them as generic type arguments for the | |
| /// aforementioned method or function. Push the result of the invocation onto | |
| /// the stack. | |
| /// | |
| /// Arguments are skipped, and `0` are specified as the numbers of arguments | |
| /// on the stack, if the expression is not a constant. We store expression of | |
| /// variable initializers to perform top-level inference, and arguments are | |
| /// never used to infer types. | |
| /// | |
| /// In general `a.b` cannot not be distinguished between: `a` is a prefix and | |
| /// `b` is a top-level function; or `a` is an object and `b` is the name of a | |
| /// method. This operation should be used for a sequence of identifiers | |
| /// `a.b.b.c.d.e` ending with an invokable result. | |
| invokeMethodRef, | |
| /// Pop the top `n` values from the stack (where `n` is obtained from | |
| /// [UnlinkedExpr.ints]) into a list (filled from the end) and take the next | |
| /// `n` values from [UnlinkedExpr.strings] and use the lists of names and | |
| /// values to create named arguments. Then pop the top `m` values from the | |
| /// stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled | |
| /// from the end) and use them as positional arguments. Use the lists of | |
| /// positional and names arguments to invoke the method with the name from | |
| /// [UnlinkedExpr.strings] of the target popped from the stack. If `k` is | |
| /// nonzero (where `k` is obtained from [UnlinkedExpr.ints]), obtain `k` type | |
| /// arguments from [UnlinkedExpr.references] and use them as generic type | |
| /// arguments for the aforementioned method. Push the result of the | |
| /// invocation onto the stack. | |
| /// | |
| /// Arguments are skipped, and `0` are specified as the numbers of arguments | |
| /// on the stack, if the expression is not a constant. We store expression of | |
| /// variable initializers to perform top-level inference, and arguments are | |
| /// never used to infer types. | |
| /// | |
| /// This operation should be used for invocation of a method invocation | |
| /// where `target` is known to be an object instance. | |
| invokeMethod, | |
| /// Begin a new cascade section. Duplicate the top value of the stack. | |
| cascadeSectionBegin, | |
| /// End a new cascade section. Pop the top value from the stack and throw it | |
| /// away. | |
| cascadeSectionEnd, | |
| /// Pop the top value from the stack and cast it to the type with reference | |
| /// from [UnlinkedExpr.references], push the result into the stack. | |
| typeCast, | |
| /// Pop the top value from the stack and check whether it is a subclass of the | |
| /// type with reference from [UnlinkedExpr.references], push the result into | |
| /// the stack. | |
| typeCheck, | |
| /// Pop the top value from the stack and raise an exception with this value. | |
| throwException, | |
| /// Obtain two values `n` and `m` from [UnlinkedExpr.ints]. Then, starting at | |
| /// the executable element for the expression being evaluated, if n > 0, pop | |
| /// to the nth enclosing function element. Then, push the mth local function | |
| /// of that element onto the stack. | |
| pushLocalFunctionReference, | |
| /// Pop the top two values from the stack. If the first value is non-null, | |
| /// keep it and discard the second. Otherwise, keep the second and discard | |
| /// the first. | |
| ifNull, | |
| /// Pop the top value from the stack. Treat it as a Future and await its | |
| /// completion. Then push the awaited value onto the stack. | |
| await, | |
| /// Push an abstract value onto the stack. Abstract values mark the presence | |
| /// of a value, but whose details are not included. | |
| /// | |
| /// This is not used by the summary generators today, but it will be used to | |
| /// experiment with prunning the initializer expression tree, so only | |
| /// information that is necessary gets included in the output summary file. | |
| pushUntypedAbstract, | |
| /// Get the next type reference from [UnlinkedExpr.references] and push an | |
| /// abstract value onto the stack that has that type. | |
| /// | |
| /// Like [pushUntypedAbstract], this is also not used by the summary | |
| /// generators today. The plan is to experiment with prunning the initializer | |
| /// expression tree, and include just enough type information to perform | |
| /// strong-mode type inference, but not all the details of how this type was | |
| /// obtained. | |
| pushTypedAbstract, | |
| /// Push an error onto the stack. | |
| /// | |
| /// Like [pushUntypedAbstract], this is not used by summary generators today. | |
| /// This will be used to experiment with prunning the const expression tree. | |
| /// If a constant has an error, we can omit the subexpression containing the | |
| /// error and only include a marker that an error was detected. | |
| pushError, | |
| /// Push `this` expression onto the stack. | |
| pushThis, | |
| /// Push `super` expression onto the stack. | |
| pushSuper, | |
| /// Pop the top n values from the stack (where n is obtained from | |
| /// [UnlinkedExpr.ints]), place them in a [Set], and push the result back | |
| /// onto the stack. The type parameter for the [Set] is implicitly | |
| /// `dynamic`. | |
| makeUntypedSet, | |
| /// Pop the top n values from the stack (where n is obtained from | |
| /// [UnlinkedExpr.ints]), place them in a [Set], and push the result back | |
| /// onto the stack. The type parameter for the [Set] is obtained from | |
| /// [UnlinkedExpr.references]. | |
| makeTypedSet, | |
| /// Pop the top n values from the stack (where n is obtained from | |
| /// [UnlinkedExpr.ints]), which should be [CollectionElement]s, place them in | |
| /// a [SetOrMap], and push the result back onto the stack. | |
| makeUntypedSetOrMap, | |
| /// Pop the top n values from the stack (where n is obtained from | |
| /// [UnlinkedExpr.ints]), which should be [CollectionElement]s, place them in | |
| /// a [Map], and push the result back onto the stack. The two type parameters | |
| /// for the [Map] are obtained from [UnlinkedExpr.references]. | |
| /// | |
| /// To replace [makeTypedMap] for unified collections. This is not backwards | |
| /// compatible with [makeTypedMap] because it expects [CollectionElement]s | |
| /// instead of pairs of [Expression]s. | |
| makeTypedMap2, | |
| /// Pop the top 2 values from the stack, place them in a [MapLiteralEntry], | |
| /// and push the result back onto the stack. | |
| makeMapLiteralEntry, | |
| /// Pop the top value from the stack, convert it to a spread element of type | |
| /// `...`, and push the result back onto the stack. | |
| spreadElement, | |
| /// Pop the top value from the stack, convert it to a spread element of type | |
| /// `...?`, and push the result back onto the stack. | |
| nullAwareSpreadElement, | |
| /// Pop the top two values from the stack. The first is a condition | |
| /// and the second is a collection element. Push an "if" element having the | |
| /// given condition, with the collection element as its "then" clause. | |
| ifElement, | |
| /// Pop the top three values from the stack. The first is a condition and the | |
| /// other two are collection elements. Push an "if" element having the given | |
| /// condition, with the two collection elements as its "then" and "else" | |
| /// clauses, respectively. | |
| ifElseElement, | |
| /// Pop the top n+2 values from the stack, where n is obtained from | |
| /// [UnlinkedExpr.ints]. The first two are the initialization and condition | |
| /// of the for-loop; the remainder are the updaters. | |
| forParts, | |
| /// Pop the top 2 values from the stack. The first is the for loop parts. | |
| /// The second is the body. | |
| forElement, | |
| /// Push the empty expression (used for missing initializers and conditions in | |
| /// `for` loops) | |
| pushEmptyExpression, | |
| /// Add a variable to the current scope whose name is obtained from | |
| /// [UnlinkedExpr.strings]. This is separate from [variableDeclaration] | |
| /// because the scope of the variable includes its own initializer. | |
| variableDeclarationStart, | |
| /// Pop the top value from the stack, and use it as the initializer for a | |
| /// variable declaration; the variable being declared is obtained by looking | |
| /// at the nth variable most recently added to the scope (where n counts from | |
| /// zero and is obtained from [UnlinkedExpr.ints]). | |
| variableDeclaration, | |
| /// Pop the top n values from the stack, which should all be variable | |
| /// declarations, and use them to create an untyped for-initializer | |
| /// declaration. The value of n is obtained from [UnlinkedExpr.ints]. | |
| forInitializerDeclarationsUntyped, | |
| /// Pop the top n values from the stack, which should all be variable | |
| /// declarations, and use them to create a typed for-initializer | |
| /// declaration. The value of n is obtained from [UnlinkedExpr.ints]. The | |
| /// type is obtained from [UnlinkedExpr.references]. | |
| forInitializerDeclarationsTyped, | |
| /// Pop from the stack `value` and get a string from [UnlinkedExpr.strings]. | |
| /// Use this string to look up a parameter. Perform `parameter op= value`, | |
| /// where `op` is the next assignment operator from | |
| /// [UnlinkedExpr.assignmentOperators]. Push `value` back onto the stack. | |
| /// | |
| /// If the assignment operator is a prefix/postfix increment/decrement, then | |
| /// `value` is not present in the stack, so it should not be popped and the | |
| /// corresponding value of the parameter after/before update is pushed onto | |
| /// the stack instead. | |
| assignToParameter, | |
| /// Pop from the stack an identifier and an expression, and create for-each | |
| /// parts of the form `identifier in expression`. | |
| forEachPartsWithIdentifier, | |
| /// Pop the top 2 values from the stack. The first is the for loop parts. | |
| /// The second is the body. | |
| forElementWithAwait, | |
| /// Pop an expression from the stack, and create for-each parts of the form | |
| /// `var name in expression`, where `name` is obtained from | |
| /// [UnlinkedExpr.strings]. | |
| forEachPartsWithUntypedDeclaration, | |
| /// Pop an expression from the stack, and create for-each parts of the form | |
| /// `Type name in expression`, where `name` is obtained from | |
| /// [UnlinkedExpr.strings], and `Type` is obtained from | |
| /// [UnlinkedExpr.references]. | |
| forEachPartsWithTypedDeclaration, | |
| /// Pop the top 2 values from the stack, compute `v1 >>> v2`, and push the | |
| /// result back onto the stack. | |
| bitShiftRightLogical | |
| } | |
| /// Enum used to indicate the kind of a parameter. | |
| enum UnlinkedParamKind : byte { | |
| /// Parameter is required and positional. | |
| requiredPositional, | |
| /// Parameter is optional and positional (enclosed in `[]`) | |
| optionalPositional, | |
| /// Parameter is optional and named (enclosed in `{}`) | |
| optionalNamed, | |
| /// Parameter is required and named (enclosed in `{}`). | |
| requiredNamed | |
| } | |
| /// TODO(scheglov) document | |
| enum UnlinkedTokenKind : byte { | |
| nothing, | |
| comment, | |
| keyword, | |
| simple, | |
| string | |
| } | |
| /// TODO(scheglov) document | |
| enum UnlinkedTokenType : byte { | |
| NOTHING, | |
| ABSTRACT, | |
| AMPERSAND, | |
| AMPERSAND_AMPERSAND, | |
| AMPERSAND_EQ, | |
| AS, | |
| ASSERT, | |
| ASYNC, | |
| AT, | |
| AWAIT, | |
| BACKPING, | |
| BACKSLASH, | |
| BANG, | |
| BANG_EQ, | |
| BANG_EQ_EQ, | |
| BAR, | |
| BAR_BAR, | |
| BAR_EQ, | |
| BREAK, | |
| CARET, | |
| CARET_EQ, | |
| CASE, | |
| CATCH, | |
| CLASS, | |
| CLOSE_CURLY_BRACKET, | |
| CLOSE_PAREN, | |
| CLOSE_SQUARE_BRACKET, | |
| COLON, | |
| COMMA, | |
| CONST, | |
| CONTINUE, | |
| COVARIANT, | |
| DEFAULT, | |
| DEFERRED, | |
| DO, | |
| DOUBLE, | |
| DYNAMIC, | |
| ELSE, | |
| ENUM, | |
| EOF, | |
| EQ, | |
| EQ_EQ, | |
| EQ_EQ_EQ, | |
| EXPORT, | |
| EXTENDS, | |
| EXTERNAL, | |
| FACTORY, | |
| FALSE, | |
| FINAL, | |
| FINALLY, | |
| FOR, | |
| FUNCTION, | |
| FUNCTION_KEYWORD, | |
| GET, | |
| GT, | |
| GT_EQ, | |
| GT_GT, | |
| GT_GT_EQ, | |
| GT_GT_GT, | |
| GT_GT_GT_EQ, | |
| HASH, | |
| HEXADECIMAL, | |
| HIDE, | |
| IDENTIFIER, | |
| IF, | |
| IMPLEMENTS, | |
| IMPORT, | |
| IN, | |
| INDEX, | |
| INDEX_EQ, | |
| INT, | |
| INTERFACE, | |
| IS, | |
| LATE, | |
| LIBRARY, | |
| LT, | |
| LT_EQ, | |
| LT_LT, | |
| LT_LT_EQ, | |
| MINUS, | |
| MINUS_EQ, | |
| MINUS_MINUS, | |
| MIXIN, | |
| MULTI_LINE_COMMENT, | |
| NATIVE, | |
| NEW, | |
| NULL, | |
| OF, | |
| ON, | |
| OPEN_CURLY_BRACKET, | |
| OPEN_PAREN, | |
| OPEN_SQUARE_BRACKET, | |
| OPERATOR, | |
| PART, | |
| PATCH, | |
| PERCENT, | |
| PERCENT_EQ, | |
| PERIOD, | |
| PERIOD_PERIOD, | |
| PERIOD_PERIOD_PERIOD, | |
| PERIOD_PERIOD_PERIOD_QUESTION, | |
| PLUS, | |
| PLUS_EQ, | |
| PLUS_PLUS, | |
| QUESTION, | |
| QUESTION_PERIOD, | |
| QUESTION_QUESTION, | |
| QUESTION_QUESTION_EQ, | |
| REQUIRED, | |
| RETHROW, | |
| RETURN, | |
| SCRIPT_TAG, | |
| SEMICOLON, | |
| SET, | |
| SHOW, | |
| SINGLE_LINE_COMMENT, | |
| SLASH, | |
| SLASH_EQ, | |
| SOURCE, | |
| STAR, | |
| STAR_EQ, | |
| STATIC, | |
| STRING, | |
| STRING_INTERPOLATION_EXPRESSION, | |
| STRING_INTERPOLATION_IDENTIFIER, | |
| SUPER, | |
| SWITCH, | |
| SYNC, | |
| THIS, | |
| THROW, | |
| TILDE, | |
| TILDE_SLASH, | |
| TILDE_SLASH_EQ, | |
| TRUE, | |
| TRY, | |
| TYPEDEF, | |
| VAR, | |
| VOID, | |
| WHILE, | |
| WITH, | |
| YIELD | |
| } | |
| /// Information about the context of an exception in analysis driver. | |
| table AnalysisDriverExceptionContext { | |
| /// The exception string. | |
| exception:string (id: 1); | |
| /// The state of files when the exception happened. | |
| files:[AnalysisDriverExceptionFile] (id: 3); | |
| /// The path of the file being analyzed when the exception happened. | |
| path:string (id: 0); | |
| /// The exception stack trace string. | |
| stackTrace:string (id: 2); | |
| } | |
| /// Information about a single file in [AnalysisDriverExceptionContext]. | |
| table AnalysisDriverExceptionFile { | |
| /// The content of the file. | |
| content:string (id: 1); | |
| /// The path of the file. | |
| path:string (id: 0); | |
| } | |
| /// Information about a resolved unit. | |
| table AnalysisDriverResolvedUnit { | |
| /// The full list of analysis errors, both syntactic and semantic. | |
| errors:[AnalysisDriverUnitError] (id: 0); | |
| /// The index of the unit. | |
| index:AnalysisDriverUnitIndex (id: 1); | |
| } | |
| /// Information about a subtype of one or more classes. | |
| table AnalysisDriverSubtype { | |
| /// The names of defined instance members. | |
| /// They are indexes into [AnalysisDriverUnitError.strings] list. | |
| /// The list is sorted in ascending order. | |
| members:[uint] (id: 1); | |
| /// The name of the class. | |
| /// It is an index into [AnalysisDriverUnitError.strings] list. | |
| name:uint (id: 0); | |
| } | |
| /// Information about an error in a resolved unit. | |
| table AnalysisDriverUnitError { | |
| /// The optional correction hint for the error. | |
| correction:string (id: 4); | |
| /// The length of the error in the file. | |
| length:uint (id: 1); | |
| /// The message of the error. | |
| message:string (id: 3); | |
| /// The offset from the beginning of the file. | |
| offset:uint (id: 0); | |
| /// The unique name of the error code. | |
| uniqueName:string (id: 2); | |
| } | |
| /// Information about a resolved unit. | |
| table AnalysisDriverUnitIndex { | |
| /// Each item of this list corresponds to a unique referenced element. It is | |
| /// the kind of the synthetic element. | |
| elementKinds:[IndexSyntheticElementKind] (id: 4); | |
| /// Each item of this list corresponds to a unique referenced element. It is | |
| /// the identifier of the class member element name, or `null` if the element | |
| /// is a top-level element. The list is sorted in ascending order, so that | |
| /// the client can quickly check whether an element is referenced in this | |
| /// index. | |
| elementNameClassMemberIds:[uint] (id: 7); | |
| /// Each item of this list corresponds to a unique referenced element. It is | |
| /// the identifier of the named parameter name, or `null` if the element is | |
| /// not a named parameter. The list is sorted in ascending order, so that the | |
| /// client can quickly check whether an element is referenced in this index. | |
| elementNameParameterIds:[uint] (id: 8); | |
| /// Each item of this list corresponds to a unique referenced element. It is | |
| /// the identifier of the top-level element name, or `null` if the element is | |
| /// the unit. The list is sorted in ascending order, so that the client can | |
| /// quickly check whether an element is referenced in this index. | |
| elementNameUnitMemberIds:[uint] (id: 6); | |
| /// Each item of this list corresponds to a unique referenced element. It is | |
| /// the index into [unitLibraryUris] and [unitUnitUris] for the library | |
| /// specific unit where the element is declared. | |
| elementUnits:[uint] (id: 5); | |
| /// Identifier of the null string in [strings]. | |
| nullStringId:uint (id: 1); | |
| /// List of unique element strings used in this index. The list is sorted in | |
| /// ascending order, so that the client can quickly check the presence of a | |
| /// string in this index. | |
| strings:[string] (id: 0); | |
| /// The list of classes declared in the unit. | |
| subtypes:[AnalysisDriverSubtype] (id: 19); | |
| /// The identifiers of supertypes of elements at corresponding indexes | |
| /// in [subtypes]. They are indexes into [strings] list. The list is sorted | |
| /// in ascending order. There might be more than one element with the same | |
| /// value if there is more than one subtype of this supertype. | |
| supertypes:[uint] (id: 18); | |
| /// Each item of this list corresponds to the library URI of a unique library | |
| /// specific unit referenced in the index. It is an index into [strings] | |
| /// list. | |
| unitLibraryUris:[uint] (id: 2); | |
| /// Each item of this list corresponds to the unit URI of a unique library | |
| /// specific unit referenced in the index. It is an index into [strings] | |
| /// list. | |
| unitUnitUris:[uint] (id: 3); | |
| /// Each item of this list is the `true` if the corresponding element usage | |
| /// is qualified with some prefix. | |
| usedElementIsQualifiedFlags:[ubyte] (id: 13); | |
| /// Each item of this list is the kind of the element usage. | |
| usedElementKinds:[IndexRelationKind] (id: 10); | |
| /// Each item of this list is the length of the element usage. | |
| usedElementLengths:[uint] (id: 12); | |
| /// Each item of this list is the offset of the element usage relative to the | |
| /// beginning of the file. | |
| usedElementOffsets:[uint] (id: 11); | |
| /// Each item of this list is the index into [elementUnits], | |
| /// [elementNameUnitMemberIds], [elementNameClassMemberIds] and | |
| /// [elementNameParameterIds]. The list is sorted in ascending order, so | |
| /// that the client can quickly find element references in this index. | |
| usedElements:[uint] (id: 9); | |
| /// Each item of this list is the `true` if the corresponding name usage | |
| /// is qualified with some prefix. | |
| usedNameIsQualifiedFlags:[ubyte] (id: 17); | |
| /// Each item of this list is the kind of the name usage. | |
| usedNameKinds:[IndexRelationKind] (id: 15); | |
| /// Each item of this list is the offset of the name usage relative to the | |
| /// beginning of the file. | |
| usedNameOffsets:[uint] (id: 16); | |
| /// Each item of this list is the index into [strings] for a used name. The | |
| /// list is sorted in ascending order, so that the client can quickly find | |
| /// whether a name is used in this index. | |
| usedNames:[uint] (id: 14); | |
| } | |
| /// Information about an unlinked unit. | |
| table AnalysisDriverUnlinkedUnit { | |
| /// List of class member names defined by the unit. | |
| definedClassMemberNames:[string] (id: 3); | |
| /// List of top-level names defined by the unit. | |
| definedTopLevelNames:[string] (id: 2); | |
| /// List of external names referenced by the unit. | |
| referencedNames:[string] (id: 0); | |
| /// List of names which are used in `extends`, `with` or `implements` clauses | |
| /// in the file. Import prefixes and type arguments are not included. | |
| subtypedNames:[string] (id: 4); | |
| /// Unlinked information for the unit. | |
| unit:UnlinkedUnit (id: 1); | |
| /// Unlinked information for the unit. | |
| unit2:UnlinkedUnit2 (id: 5); | |
| } | |
| /// Information about a single declaration. | |
| table AvailableDeclaration { | |
| children:[AvailableDeclaration] (id: 0); | |
| defaultArgumentListString:string (id: 1); | |
| defaultArgumentListTextRanges:[uint] (id: 2); | |
| docComplete:string (id: 3); | |
| docSummary:string (id: 4); | |
| fieldMask:uint (id: 5); | |
| isAbstract:bool (id: 6); | |
| isConst:bool (id: 7); | |
| isDeprecated:bool (id: 8); | |
| isFinal:bool (id: 9); | |
| /// The kind of the declaration. | |
| kind:AvailableDeclarationKind (id: 10); | |
| locationOffset:uint (id: 11); | |
| locationStartColumn:uint (id: 12); | |
| locationStartLine:uint (id: 13); | |
| /// The first part of the declaration name, usually the only one, for example | |
| /// the name of a class like `MyClass`, or a function like `myFunction`. | |
| name:string (id: 14); | |
| parameterNames:[string] (id: 15); | |
| parameters:string (id: 16); | |
| parameterTypes:[string] (id: 17); | |
| /// The partial list of relevance tags. Not every declaration has one (for | |
| /// example, function do not currently), and not every declaration has to | |
| /// store one (for classes it can be computed when we know the library that | |
| /// includes this file). | |
| relevanceTags:[string] (id: 18); | |
| requiredParameterCount:uint (id: 19); | |
| returnType:string (id: 20); | |
| typeParameters:string (id: 21); | |
| } | |
| /// Information about an available, even if not yet imported file. | |
| table AvailableFile { | |
| /// Declarations of the file. | |
| declarations:[AvailableDeclaration] (id: 0); | |
| /// The Dartdoc directives in the file. | |
| directiveInfo:DirectiveInfo (id: 5); | |
| /// Exports directives of the file. | |
| exports:[AvailableFileExport] (id: 1); | |
| /// Is `true` if this file is a library. | |
| isLibrary:bool (id: 2); | |
| /// Is `true` if this file is a library, and it is deprecated. | |
| isLibraryDeprecated:bool (id: 3); | |
| /// URIs of `part` directives. | |
| parts:[string] (id: 4); | |
| } | |
| /// Information about an export directive. | |
| table AvailableFileExport { | |
| /// Combinators contained in this export directive. | |
| combinators:[AvailableFileExportCombinator] (id: 1); | |
| /// URI of the exported library. | |
| uri:string (id: 0); | |
| } | |
| /// Information about a `show` or `hide` combinator in an export directive. | |
| table AvailableFileExportCombinator { | |
| /// List of names which are hidden. Empty if this is a `show` combinator. | |
| hides:[string] (id: 1); | |
| /// List of names which are shown. Empty if this is a `hide` combinator. | |
| shows:[string] (id: 0); | |
| } | |
| /// Information about an element code range. | |
| table CodeRange { | |
| /// Length of the element code. | |
| length:uint (id: 1); | |
| /// Offset of the element code relative to the beginning of the file. | |
| offset:uint (id: 0); | |
| } | |
| /// Information about the Dartdoc directives in an [AvailableFile]. | |
| table DirectiveInfo { | |
| /// The names of the defined templates. | |
| templateNames:[string] (id: 0); | |
| /// The values of the defined templates. | |
| templateValues:[string] (id: 1); | |
| } | |
| /// Summary information about a reference to an entity such as a type, top level | |
| /// executable, or executable within a class. | |
| table EntityRef { | |
| /// The kind of entity being represented. | |
| entityKind:EntityRefKind (id: 8); | |
| /// Notice: This will be deprecated. However, its not deprecated yet, as we're | |
| /// keeping it for backwards compatibilty, and marking it deprecated makes it | |
| /// unreadable. | |
| /// | |
| /// TODO(mfairhurst) mark this deprecated, and remove its logic. | |
| /// | |
| /// If this is a reference to a function type implicitly defined by a | |
| /// function-typed parameter, a list of zero-based indices indicating the path | |
| /// from the entity referred to by [reference] to the appropriate type | |
| /// parameter. Otherwise the empty list. | |
| /// | |
| /// If there are N indices in this list, then the entity being referred to is | |
| /// the function type implicitly defined by a function-typed parameter of a | |
| /// function-typed parameter, to N levels of nesting. The first index in the | |
| /// list refers to the outermost level of nesting; for example if [reference] | |
| /// refers to the entity defined by: | |
| /// | |
| /// void f(x, void g(y, z, int h(String w))) { ... } | |
| /// | |
| /// Then to refer to the function type implicitly defined by parameter `h` | |
| /// (which is parameter 2 of parameter 1 of `f`), then | |
| /// [implicitFunctionTypeIndices] should be [1, 2]. | |
| /// | |
| /// Note that if the entity being referred to is a generic method inside a | |
| /// generic class, then the type arguments in [typeArguments] are applied | |
| /// first to the class and then to the method. | |
| implicitFunctionTypeIndices:[uint] (id: 4); | |
| /// If the reference represents a type, the nullability of the type. | |
| nullabilitySuffix:EntityRefNullabilitySuffix (id: 10); | |
| /// If this is a reference to a type parameter, one-based index into the list | |
| /// of [UnlinkedTypeParam]s currently in effect. Indexing is done using De | |
| /// Bruijn index conventions; that is, innermost parameters come first, and | |
| /// if a class or method has multiple parameters, they are indexed from right | |
| /// to left. So for instance, if the enclosing declaration is | |
| /// | |
| /// class C<T,U> { | |
| /// m<V,W> { | |
| /// ... | |
| /// } | |
| /// } | |
| /// | |
| /// Then [paramReference] values of 1, 2, 3, and 4 represent W, V, U, and T, | |
| /// respectively. | |
| /// | |
| /// If the type being referred to is not a type parameter, [paramReference] is | |
| /// zero. | |
| paramReference:uint (id: 3); | |
| /// Index into [UnlinkedUnit.references] for the entity being referred to, or | |
| /// zero if this is a reference to a type parameter. | |
| reference:uint (id: 0); | |
| /// If this [EntityRef] appears in a syntactic context where its type | |
| /// arguments might need to be inferred by a method other than | |
| /// instantiate-to-bounds, and [typeArguments] is empty, a slot id (which is | |
| /// unique within the compilation unit). If an entry appears in | |
| /// [LinkedUnit.types] whose [slot] matches this value, that entry will | |
| /// contain the complete inferred type. | |
| /// | |
| /// This is called `refinedSlot` to clarify that if it points to an inferred | |
| /// type, it points to a type that is a "refinement" of this one (one in which | |
| /// some type arguments have been inferred). | |
| refinedSlot:uint (id: 9); | |
| /// If this [EntityRef] is contained within [LinkedUnit.types], slot id (which | |
| /// is unique within the compilation unit) identifying the target of type | |
| /// propagation or type inference with which this [EntityRef] is associated. | |
| /// | |
| /// Otherwise zero. | |
| slot:uint (id: 2); | |
| /// If this [EntityRef] is a reference to a function type whose | |
| /// [FunctionElement] is not in any library (e.g. a function type that was | |
| /// synthesized by a LUB computation), the function parameters. Otherwise | |
| /// empty. | |
| syntheticParams:[UnlinkedParam] (id: 6); | |
| /// If this [EntityRef] is a reference to a function type whose | |
| /// [FunctionElement] is not in any library (e.g. a function type that was | |
| /// synthesized by a LUB computation), the return type of the function. | |
| /// Otherwise `null`. | |
| syntheticReturnType:EntityRef (id: 5); | |
| /// If this is an instantiation of a generic type or generic executable, the | |
| /// type arguments used to instantiate it (if any). | |
| typeArguments:[EntityRef] (id: 1); | |
| /// If this is a function type, the type parameters defined for the function | |
| /// type (if any). | |
| typeParameters:[UnlinkedTypeParam] (id: 7); | |
| } | |
| /// Information about a dependency that exists between one library and another | |
| /// due to an "import" declaration. | |
| table LinkedDependency { | |
| /// Absolute URI for the compilation units listed in the library's `part` | |
| /// declarations, empty string for invalid URI. | |
| parts:[string] (id: 1); | |
| /// The absolute URI of the dependent library, e.g. `package:foo/bar.dart`. | |
| uri:string (id: 0); | |
| } | |
| /// Information about a single name in the export namespace of the library that | |
| /// is not in the public namespace. | |
| table LinkedExportName { | |
| /// Index into [LinkedLibrary.dependencies] for the library in which the | |
| /// entity is defined. | |
| dependency:uint (id: 0); | |
| /// The kind of the entity being referred to. | |
| kind:ReferenceKind (id: 3); | |
| /// Name of the exported entity. For an exported setter, this name includes | |
| /// the trailing '='. | |
| name:string (id: 1); | |
| /// Integer index indicating which unit in the exported library contains the | |
| /// definition of the entity. As with indices into [LinkedLibrary.units], | |
| /// zero represents the defining compilation unit, and nonzero values | |
| /// represent parts in the order of the corresponding `part` declarations. | |
| unit:uint (id: 2); | |
| } | |
| /// Linked summary of a library. | |
| table LinkedLibrary { | |
| /// The libraries that this library depends on (either via an explicit import | |
| /// statement or via the implicit dependencies on `dart:core` and | |
| /// `dart:async`). The first element of this array is a pseudo-dependency | |
| /// representing the library itself (it is also used for `dynamic` and | |
| /// `void`). This is followed by elements representing "prelinked" | |
| /// dependencies (direct imports and the transitive closure of exports). | |
| /// After the prelinked dependencies are elements representing "linked" | |
| /// dependencies. | |
| /// | |
| /// A library is only included as a "linked" dependency if it is a true | |
| /// dependency (e.g. a propagated or inferred type or constant value | |
| /// implicitly refers to an element declared in the library) or | |
| /// anti-dependency (e.g. the result of type propagation or type inference | |
| /// depends on the lack of a certain declaration in the library). | |
| dependencies:[LinkedDependency] (id: 0); | |
| /// For each export in [UnlinkedUnit.exports], an index into [dependencies] | |
| /// of the library being exported. | |
| exportDependencies:[uint] (id: 6); | |
| /// Information about entities in the export namespace of the library that are | |
| /// not in the public namespace of the library (that is, entities that are | |
| /// brought into the namespace via `export` directives). | |
| /// | |
| /// Sorted by name. | |
| exportNames:[LinkedExportName] (id: 4); | |
| /// Indicates whether this library was summarized in "fallback mode". If | |
| /// true, all other fields in the data structure have their default values. | |
| fallbackMode:bool (id: 5, deprecated); | |
| /// For each import in [UnlinkedUnit.imports], an index into [dependencies] | |
| /// of the library being imported. | |
| importDependencies:[uint] (id: 1); | |
| /// The number of elements in [dependencies] which are not "linked" | |
| /// dependencies (that is, the number of libraries in the direct imports plus | |
| /// the transitive closure of exports, plus the library itself). | |
| numPrelinkedDependencies:uint (id: 2); | |
| /// The linked summary of all the compilation units constituting the | |
| /// library. The summary of the defining compilation unit is listed first, | |
| /// followed by the summary of each part, in the order of the `part` | |
| /// declarations in the defining compilation unit. | |
| units:[LinkedUnit] (id: 3); | |
| } | |
| /// Information about a linked AST node. | |
| table LinkedNode { | |
| /// The explicit or inferred return type of a function typed node. | |
| variantField_24:LinkedNodeType (id: 24); | |
| variantField_2:[LinkedNode] (id: 2); | |
| variantField_11:LinkedNode (id: 11); | |
| variantField_4:[LinkedNode] (id: 4); | |
| variantField_6:LinkedNode (id: 6); | |
| variantField_7:LinkedNode (id: 7); | |
| variantField_17:uint (id: 17); | |
| variantField_23:LinkedNodeType (id: 23); | |
| variantField_8:LinkedNode (id: 8); | |
| variantField_15:uint (id: 15); | |
| variantField_28:UnlinkedTokenType (id: 28); | |
| variantField_27:bool (id: 27); | |
| variantField_9:LinkedNode (id: 9); | |
| variantField_12:LinkedNode (id: 12); | |
| variantField_5:[LinkedNode] (id: 5); | |
| variantField_13:LinkedNode (id: 13); | |
| variantField_34:uint (id: 34); | |
| variantField_33:uint (id: 33); | |
| variantField_36:[string] (id: 36); | |
| variantField_29:LinkedNodeCommentType (id: 29); | |
| variantField_3:[LinkedNode] (id: 3); | |
| variantField_10:LinkedNode (id: 10); | |
| variantField_26:LinkedNodeFormalParameterKind (id: 26); | |
| variantField_21:double (id: 21); | |
| variantField_25:LinkedNodeType (id: 25); | |
| flags:uint (id: 18); | |
| variantField_1:string (id: 1); | |
| variantField_16:uint (id: 16); | |
| variantField_30:string (id: 30); | |
| variantField_14:LinkedNode (id: 14); | |
| kind:LinkedNodeKind (id: 0); | |
| name:string (id: 37); | |
| variantField_20:string (id: 20); | |
| variantField_31:bool (id: 31); | |
| variantField_38:UnlinkedTokenType (id: 38); | |
| variantField_35:TopLevelInferenceError (id: 35); | |
| variantField_22:string (id: 22); | |
| variantField_19:uint (id: 19); | |
| variantField_32:LinkedNodeVariablesDeclaration (id: 32); | |
| } | |
| /// Information about a group of libraries linked together, for example because | |
| /// they form a single cycle, or because they represent a single build artifact. | |
| table LinkedNodeBundle { | |
| libraries:[LinkedNodeLibrary] (id: 1); | |
| /// The shared list of references used in the [libraries]. | |
| references:LinkedNodeReferences (id: 0); | |
| } | |
| /// Information about a single library in a [LinkedNodeBundle]. | |
| table LinkedNodeLibrary { | |
| exports:[uint] (id: 2); | |
| name:string (id: 3); | |
| nameLength:uint (id: 5); | |
| nameOffset:uint (id: 4); | |
| units:[LinkedNodeUnit] (id: 1); | |
| uriStr:string (id: 0); | |
| } | |
| /// Flattened tree of declarations referenced from [LinkedNode]s. | |
| table LinkedNodeReferences { | |
| name:[string] (id: 1); | |
| parent:[uint] (id: 0); | |
| } | |
| /// Information about a Dart type. | |
| table LinkedNodeType { | |
| functionFormalParameters:[LinkedNodeTypeFormalParameter] (id: 0); | |
| functionReturnType:LinkedNodeType (id: 1); | |
| functionTypeParameters:[LinkedNodeTypeTypeParameter] (id: 2); | |
| genericTypeAliasReference:uint (id: 8); | |
| genericTypeAliasTypeArguments:[LinkedNodeType] (id: 9); | |
| /// Reference to a [LinkedNodeReferences]. | |
| interfaceClass:uint (id: 3); | |
| interfaceTypeArguments:[LinkedNodeType] (id: 4); | |
| kind:LinkedNodeTypeKind (id: 5); | |
| nullabilitySuffix:EntityRefNullabilitySuffix (id: 10); | |
| typeParameterElement:uint (id: 6); | |
| typeParameterId:uint (id: 7); | |
| } | |
| /// Information about a formal parameter in a function type. | |
| table LinkedNodeTypeFormalParameter { | |
| kind:LinkedNodeFormalParameterKind (id: 0); | |
| name:string (id: 1); | |
| type:LinkedNodeType (id: 2); | |
| } | |
| /// Information about a type parameter in a function type. | |
| table LinkedNodeTypeTypeParameter { | |
| bound:LinkedNodeType (id: 1); | |
| name:string (id: 0); | |
| } | |
| /// Information about a single library in a [LinkedNodeLibrary]. | |
| table LinkedNodeUnit { | |
| /// All generic function types in the unit - in generic type aliases, or used | |
| /// directly as type annotations. | |
| /// | |
| /// They are requested in two cases: when we are reading a node that contains | |
| /// them (e.g. a return type of a method), or when we run over unresolved | |
| /// AST in declaration resolver. | |
| genericFunctionTypes:[LinkedNode] (id: 5); | |
| isSynthetic:bool (id: 3); | |
| /// Offsets of the first character of each line in the source code. | |
| lineStarts:[uint] (id: 4); | |
| node:LinkedNode (id: 2); | |
| tokens:UnlinkedTokens (id: 1); | |
| uriStr:string (id: 0); | |
| isNNBD:bool (id: 6); | |
| } | |
| /// Information about a top-level declaration, or a field declaration that | |
| /// contributes information to [LinkedNodeKind.variableDeclaration]. | |
| table LinkedNodeVariablesDeclaration { | |
| comment:LinkedNode (id: 0); | |
| isConst:bool (id: 1); | |
| isCovariant:bool (id: 2); | |
| isFinal:bool (id: 3); | |
| isStatic:bool (id: 4); | |
| } | |
| /// Information about the resolution of an [UnlinkedReference]. | |
| table LinkedReference { | |
| /// If this [LinkedReference] doesn't have an associated [UnlinkedReference], | |
| /// and the entity being referred to is contained within another entity, index | |
| /// of the containing entity. This behaves similarly to | |
| /// [UnlinkedReference.prefixReference], however it is only used for class | |
| /// members, not for prefixed imports. | |
| /// | |
| /// Containing references must always point backward; that is, for all i, if | |
| /// LinkedUnit.references[i].containingReference != 0, then | |
| /// LinkedUnit.references[i].containingReference < i. | |
| containingReference:uint (id: 5); | |
| /// Index into [LinkedLibrary.dependencies] indicating which imported library | |
| /// declares the entity being referred to. | |
| /// | |
| /// Zero if this entity is contained within another entity (e.g. a class | |
| /// member), or if [kind] is [ReferenceKind.prefix]. | |
| dependency:uint (id: 1); | |
| /// The kind of the entity being referred to. For the pseudo-types `dynamic` | |
| /// and `void`, the kind is [ReferenceKind.classOrEnum]. | |
| kind:ReferenceKind (id: 2); | |
| /// If [kind] is [ReferenceKind.function] (that is, the entity being referred | |
| /// to is a local function), the index of the function within | |
| /// [UnlinkedExecutable.localFunctions]. Otherwise zero. | |
| localIndex:uint (id: 6, deprecated); | |
| /// If this [LinkedReference] doesn't have an associated [UnlinkedReference], | |
| /// name of the entity being referred to. For the pseudo-type `dynamic`, the | |
| /// string is "dynamic". For the pseudo-type `void`, the string is "void". | |
| name:string (id: 3); | |
| /// If the entity being referred to is generic, the number of type parameters | |
| /// it declares (does not include type parameters of enclosing entities). | |
| /// Otherwise zero. | |
| numTypeParameters:uint (id: 4); | |
| /// Integer index indicating which unit in the imported library contains the | |
| /// definition of the entity. As with indices into [LinkedLibrary.units], | |
| /// zero represents the defining compilation unit, and nonzero values | |
| /// represent parts in the order of the corresponding `part` declarations. | |
| /// | |
| /// Zero if this entity is contained within another entity (e.g. a class | |
| /// member). | |
| unit:uint (id: 0); | |
| } | |
| /// Linked summary of a compilation unit. | |
| table LinkedUnit { | |
| /// List of slot ids (referring to [UnlinkedExecutable.constCycleSlot]) | |
| /// corresponding to const constructors that are part of cycles. | |
| constCycles:[uint] (id: 2); | |
| /// List of slot ids (referring to [UnlinkedClass.notSimplyBoundedSlot] or | |
| /// [UnlinkedTypedef.notSimplyBoundedSlot]) corresponding to classes and | |
| /// typedefs that are not simply bounded. | |
| notSimplyBounded:[uint] (id: 5); | |
| /// List of slot ids (referring to [UnlinkedParam.inheritsCovariantSlot] or | |
| /// [UnlinkedVariable.inheritsCovariantSlot]) corresponding to parameters | |
| /// that inherit `@covariant` behavior from a base class. | |
| parametersInheritingCovariant:[uint] (id: 3); | |
| /// Information about the resolution of references within the compilation | |
| /// unit. Each element of [UnlinkedUnit.references] has a corresponding | |
| /// element in this list (at the same index). If this list has additional | |
| /// elements beyond the number of elements in [UnlinkedUnit.references], those | |
| /// additional elements are references that are only referred to implicitly | |
| /// (e.g. elements involved in inferred or propagated types). | |
| references:[LinkedReference] (id: 0); | |
| /// The list of type inference errors. | |
| topLevelInferenceErrors:[TopLevelInferenceError] (id: 4); | |
| /// List associating slot ids found inside the unlinked summary for the | |
| /// compilation unit with propagated and inferred types. | |
| types:[EntityRef] (id: 1); | |
| } | |
| /// Summary information about a package. | |
| table PackageBundle { | |
| /// MD5 hash of the non-informative fields of the [PackageBundle] (not | |
| /// including this one). This can be used to identify when the API of a | |
| /// package may have changed. | |
| apiSignature:string (id: 7, deprecated); | |
| /// The version 2 of the summary. | |
| bundle2:LinkedNodeBundle (id: 9); | |
| /// Information about the packages this package depends on, if known. | |
| dependencies:[PackageDependencyInfo] (id: 8, deprecated); | |
| /// Linked libraries. | |
| linkedLibraries:[LinkedLibrary] (id: 0); | |
| /// The list of URIs of items in [linkedLibraries], e.g. `dart:core` or | |
| /// `package:foo/bar.dart`. | |
| linkedLibraryUris:[string] (id: 1); | |
| /// Major version of the summary format. See | |
| /// [PackageBundleAssembler.currentMajorVersion]. | |
| majorVersion:uint (id: 5); | |
| /// Minor version of the summary format. See | |
| /// [PackageBundleAssembler.currentMinorVersion]. | |
| minorVersion:uint (id: 6); | |
| /// List of MD5 hashes of the files listed in [unlinkedUnitUris]. Each hash | |
| /// is encoded as a hexadecimal string using lower case letters. | |
| unlinkedUnitHashes:[string] (id: 4, deprecated); | |
| /// Unlinked information for the compilation units constituting the package. | |
| unlinkedUnits:[UnlinkedUnit] (id: 2); | |
| /// The list of URIs of items in [unlinkedUnits], e.g. `dart:core/bool.dart`. | |
| unlinkedUnitUris:[string] (id: 3); | |
| } | |
| /// Information about a single dependency of a summary package. | |
| table PackageDependencyInfo { | |
| /// API signature of this dependency. | |
| apiSignature:string (id: 0); | |
| /// If this dependency summarizes any files whose URI takes the form | |
| /// "package:<package_name>/...", a list of all such package names, sorted | |
| /// lexicographically. Otherwise empty. | |
| includedPackageNames:[string] (id: 2); | |
| /// Indicates whether this dependency summarizes any files whose URI takes the | |
| /// form "dart:...". | |
| includesDartUris:bool (id: 4); | |
| /// Indicates whether this dependency summarizes any files whose URI takes the | |
| /// form "file:...". | |
| includesFileUris:bool (id: 3); | |
| /// Relative path to the summary file for this dependency. This is intended | |
| /// as a hint to help the analysis server locate summaries of dependencies. | |
| /// We don't specify precisely what this path is relative to, but we expect | |
| /// it to be relative to a directory the analysis server can find (e.g. for | |
| /// projects built using Bazel, it would be relative to the "bazel-bin" | |
| /// directory). | |
| /// | |
| /// Absent if the path is not known. | |
| summaryPath:string (id: 1); | |
| } | |
| /// Index information about a package. | |
| table PackageIndex { | |
| /// Each item of this list corresponds to a unique referenced element. It is | |
| /// the kind of the synthetic element. | |
| elementKinds:[IndexSyntheticElementKind] (id: 5); | |
| /// Each item of this list corresponds to a unique referenced element. It is | |
| /// the identifier of the class member element name, or `null` if the element | |
| /// is a top-level element. The list is sorted in ascending order, so that | |
| /// the client can quickly check whether an element is referenced in this | |
| /// [PackageIndex]. | |
| elementNameClassMemberIds:[uint] (id: 7); | |
| /// Each item of this list corresponds to a unique referenced element. It is | |
| /// the identifier of the named parameter name, or `null` if the element is | |
| /// not a named parameter. The list is sorted in ascending order, so that the | |
| /// client can quickly check whether an element is referenced in this | |
| /// [PackageIndex]. | |
| elementNameParameterIds:[uint] (id: 8); | |
| /// Each item of this list corresponds to a unique referenced element. It is | |
| /// the identifier of the top-level element name, or `null` if the element is | |
| /// the unit. The list is sorted in ascending order, so that the client can | |
| /// quickly check whether an element is referenced in this [PackageIndex]. | |
| elementNameUnitMemberIds:[uint] (id: 1); | |
| /// Each item of this list corresponds to a unique referenced element. It is | |
| /// the index into [unitLibraryUris] and [unitUnitUris] for the library | |
| /// specific unit where the element is declared. | |
| elementUnits:[uint] (id: 0); | |
| /// List of unique element strings used in this [PackageIndex]. The list is | |
| /// sorted in ascending order, so that the client can quickly check the | |
| /// presence of a string in this [PackageIndex]. | |
| strings:[string] (id: 6); | |
| /// Each item of this list corresponds to the library URI of a unique library | |
| /// specific unit referenced in the [PackageIndex]. It is an index into | |
| /// [strings] list. | |
| unitLibraryUris:[uint] (id: 2); | |
| /// List of indexes of each unit in this [PackageIndex]. | |
| units:[UnitIndex] (id: 4); | |
| /// Each item of this list corresponds to the unit URI of a unique library | |
| /// specific unit referenced in the [PackageIndex]. It is an index into | |
| /// [strings] list. | |
| unitUnitUris:[uint] (id: 3); | |
| } | |
| /// Summary information about a top-level type inference error. | |
| table TopLevelInferenceError { | |
| /// The [kind] specific arguments. | |
| arguments:[string] (id: 2); | |
| /// The kind of the error. | |
| kind:TopLevelInferenceErrorKind (id: 1); | |
| /// The slot id (which is unique within the compilation unit) identifying the | |
| /// target of type inference with which this [TopLevelInferenceError] is | |
| /// associated. | |
| slot:uint (id: 0); | |
| } | |
| /// Index information about a unit in a [PackageIndex]. | |
| table UnitIndex { | |
| /// Each item of this list is the kind of an element defined in this unit. | |
| definedNameKinds:[IndexNameKind] (id: 6); | |
| /// Each item of this list is the name offset of an element defined in this | |
| /// unit relative to the beginning of the file. | |
| definedNameOffsets:[uint] (id: 7); | |
| /// Each item of this list corresponds to an element defined in this unit. It | |
| /// is an index into [PackageIndex.strings] list. The list is sorted in | |
| /// ascending order, so that the client can quickly find name definitions in | |
| /// this [UnitIndex]. | |
| definedNames:[uint] (id: 5); | |
| /// Index into [PackageIndex.unitLibraryUris] and [PackageIndex.unitUnitUris] | |
| /// for the library specific unit that corresponds to this [UnitIndex]. | |
| unit:uint (id: 0); | |
| /// Each item of this list is the `true` if the corresponding element usage | |
| /// is qualified with some prefix. | |
| usedElementIsQualifiedFlags:[ubyte] (id: 11); | |
| /// Each item of this list is the kind of the element usage. | |
| usedElementKinds:[IndexRelationKind] (id: 4); | |
| /// Each item of this list is the length of the element usage. | |
| usedElementLengths:[uint] (id: 1); | |
| /// Each item of this list is the offset of the element usage relative to the | |
| /// beginning of the file. | |
| usedElementOffsets:[uint] (id: 2); | |
| /// Each item of this list is the index into [PackageIndex.elementUnits] and | |
| /// [PackageIndex.elementOffsets]. The list is sorted in ascending order, so | |
| /// that the client can quickly find element references in this [UnitIndex]. | |
| usedElements:[uint] (id: 3); | |
| /// Each item of this list is the `true` if the corresponding name usage | |
| /// is qualified with some prefix. | |
| usedNameIsQualifiedFlags:[ubyte] (id: 12); | |
| /// Each item of this list is the kind of the name usage. | |
| usedNameKinds:[IndexRelationKind] (id: 10); | |
| /// Each item of this list is the offset of the name usage relative to the | |
| /// beginning of the file. | |
| usedNameOffsets:[uint] (id: 9); | |
| /// Each item of this list is the index into [PackageIndex.strings] for a | |
| /// used name. The list is sorted in ascending order, so that the client can | |
| /// quickly find name uses in this [UnitIndex]. | |
| usedNames:[uint] (id: 8); | |
| } | |
| /// Unlinked summary information about a class declaration. | |
| table UnlinkedClass { | |
| /// Annotations for this class. | |
| annotations:[UnlinkedExpr] (id: 5); | |
| /// Code range of the class. | |
| codeRange:CodeRange (id: 13); | |
| /// Documentation comment for the class, or `null` if there is no | |
| /// documentation comment. | |
| documentationComment:UnlinkedDocumentationComment (id: 6); | |
| /// Executable objects (methods, getters, and setters) contained in the class. | |
| executables:[UnlinkedExecutable] (id: 2); | |
| /// Field declarations contained in the class. | |
| fields:[UnlinkedVariable] (id: 4); | |
| /// Indicates whether this class is the core "Object" class (and hence has no | |
| /// supertype) | |
| hasNoSupertype:bool (id: 12); | |
| /// Interfaces appearing in an `implements` clause, if any. | |
| interfaces:[EntityRef] (id: 7); | |
| /// Indicates whether the class is declared with the `abstract` keyword. | |
| isAbstract:bool (id: 8); | |
| /// Indicates whether the class is declared using mixin application syntax. | |
| isMixinApplication:bool (id: 11); | |
| /// Mixins appearing in a `with` clause, if any. | |
| mixins:[EntityRef] (id: 10); | |
| /// Name of the class. | |
| name:string (id: 0); | |
| /// Offset of the class name relative to the beginning of the file. | |
| nameOffset:uint (id: 1); | |
| /// If the class might not be simply bounded, a nonzero slot id which is unique | |
| /// within this compilation unit. If this id is found in | |
| /// [LinkedUnit.notSimplyBounded], then at least one of this class's type | |
| /// parameters is not simply bounded, hence this class can't be used as a raw | |
| /// type when specifying the bound of a type parameter. | |
| /// | |
| /// Otherwise, zero. | |
| notSimplyBoundedSlot:uint (id: 16); | |
| /// Superclass constraints for this mixin declaration. The list will be empty | |
| /// if this class is not a mixin declaration, or if the declaration does not | |
| /// have an `on` clause (in which case the type `Object` is implied). | |
| superclassConstraints:[EntityRef] (id: 14); | |
| /// Names of methods, getters, setters, and operators that this mixin | |
| /// declaration super-invokes. For setters this includes the trailing "=". | |
| /// The list will be empty if this class is not a mixin declaration. | |
| superInvokedNames:[string] (id: 15); | |
| /// Supertype of the class, or `null` if either (a) the class doesn't | |
| /// explicitly declare a supertype (and hence has supertype `Object`), or (b) | |
| /// the class *is* `Object` (and hence has no supertype). | |
| supertype:EntityRef (id: 3); | |
| /// Type parameters of the class, if any. | |
| typeParameters:[UnlinkedTypeParam] (id: 9); | |
| } | |
| /// Unlinked summary information about a `show` or `hide` combinator in an | |
| /// import or export declaration. | |
| table UnlinkedCombinator { | |
| /// If this is a `show` combinator, offset of the end of the list of shown | |
| /// names. Otherwise zero. | |
| end:uint (id: 3); | |
| /// List of names which are hidden. Empty if this is a `show` combinator. | |
| hides:[string] (id: 1); | |
| /// If this is a `show` combinator, offset of the `show` keyword. Otherwise | |
| /// zero. | |
| offset:uint (id: 2); | |
| /// List of names which are shown. Empty if this is a `hide` combinator. | |
| shows:[string] (id: 0); | |
| } | |
| /// Unlinked summary information about a single import or export configuration. | |
| table UnlinkedConfiguration { | |
| /// The name of the declared variable whose value is being used in the | |
| /// condition. | |
| name:string (id: 0); | |
| /// The URI of the implementation library to be used if the condition is true. | |
| uri:string (id: 2); | |
| /// The value to which the value of the declared variable will be compared, | |
| /// or `true` if the condition does not include an equality test. | |
| value:string (id: 1); | |
| } | |
| /// Unlinked summary information about a constructor initializer. | |
| table UnlinkedConstructorInitializer { | |
| /// If there are `m` [arguments] and `n` [argumentNames], then each argument | |
| /// from [arguments] with index `i` such that `n + i - m >= 0`, should be used | |
| /// with the name at `n + i - m`. | |
| argumentNames:[string] (id: 4); | |
| /// If [kind] is `thisInvocation` or `superInvocation`, the arguments of the | |
| /// invocation. Otherwise empty. | |
| arguments:[UnlinkedExpr] (id: 3); | |
| /// If [kind] is `field`, the expression of the field initializer. | |
| /// Otherwise `null`. | |
| expression:UnlinkedExpr (id: 1); | |
| /// The kind of the constructor initializer (field, redirect, super). | |
| kind:UnlinkedConstructorInitializerKind (id: 2); | |
| /// If [kind] is `field`, the name of the field declared in the class. If | |
| /// [kind] is `thisInvocation`, the name of the constructor, declared in this | |
| /// class, to redirect to. If [kind] is `superInvocation`, the name of the | |
| /// constructor, declared in the superclass, to invoke. | |
| name:string (id: 0); | |
| } | |
| /// Unlinked summary information about a documentation comment. | |
| table UnlinkedDocumentationComment { | |
| /// Length of the documentation comment (prior to replacing '\r\n' with '\n'). | |
| length:uint (id: 0, deprecated); | |
| /// Offset of the beginning of the documentation comment relative to the | |
| /// beginning of the file. | |
| offset:uint (id: 2, deprecated); | |
| /// Text of the documentation comment, with '\r\n' replaced by '\n'. | |
| /// | |
| /// References appearing within the doc comment in square brackets are not | |
| /// specially encoded. | |
| text:string (id: 1); | |
| } | |
| /// Unlinked summary information about an enum declaration. | |
| table UnlinkedEnum { | |
| /// Annotations for this enum. | |
| annotations:[UnlinkedExpr] (id: 4); | |
| /// Code range of the enum. | |
| codeRange:CodeRange (id: 5); | |
| /// Documentation comment for the enum, or `null` if there is no documentation | |
| /// comment. | |
| documentationComment:UnlinkedDocumentationComment (id: 3); | |
| /// Name of the enum type. | |
| name:string (id: 0); | |
| /// Offset of the enum name relative to the beginning of the file. | |
| nameOffset:uint (id: 1); | |
| /// Values listed in the enum declaration, in declaration order. | |
| values:[UnlinkedEnumValue] (id: 2); | |
| } | |
| /// Unlinked summary information about a single enumerated value in an enum | |
| /// declaration. | |
| table UnlinkedEnumValue { | |
| /// Annotations for this value. | |
| annotations:[UnlinkedExpr] (id: 3); | |
| /// Documentation comment for the enum value, or `null` if there is no | |
| /// documentation comment. | |
| documentationComment:UnlinkedDocumentationComment (id: 2); | |
| /// Name of the enumerated value. | |
| name:string (id: 0); | |
| /// Offset of the enum value name relative to the beginning of the file. | |
| nameOffset:uint (id: 1); | |
| } | |
| /// Unlinked summary information about a function, method, getter, or setter | |
| /// declaration. | |
| table UnlinkedExecutable { | |
| /// Annotations for this executable. | |
| annotations:[UnlinkedExpr] (id: 6); | |
| /// If this executable's function body is declared using `=>`, the expression | |
| /// to the right of the `=>`. May be omitted if neither type inference nor | |
| /// constant evaluation depends on the function body. | |
| bodyExpr:UnlinkedExpr (id: 29); | |
| /// Code range of the executable. | |
| codeRange:CodeRange (id: 26); | |
| /// If a constant [UnlinkedExecutableKind.constructor], the constructor | |
| /// initializers. Otherwise empty. | |
| constantInitializers:[UnlinkedConstructorInitializer] (id: 14); | |
| /// If [kind] is [UnlinkedExecutableKind.constructor] and [isConst] is `true`, | |
| /// a nonzero slot id which is unique within this compilation unit. If this | |
| /// id is found in [LinkedUnit.constCycles], then this constructor is part of | |
| /// a cycle. | |
| /// | |
| /// Otherwise, zero. | |
| constCycleSlot:uint (id: 25); | |
| /// Documentation comment for the executable, or `null` if there is no | |
| /// documentation comment. | |
| documentationComment:UnlinkedDocumentationComment (id: 7); | |
| /// If this executable's return type is inferable, nonzero slot id | |
| /// identifying which entry in [LinkedUnit.types] contains the inferred | |
| /// return type. If there is no matching entry in [LinkedUnit.types], then | |
| /// no return type was inferred for this variable, so its static type is | |
| /// `dynamic`. | |
| inferredReturnTypeSlot:uint (id: 5); | |
| /// Indicates whether the executable is declared using the `abstract` keyword. | |
| isAbstract:bool (id: 10); | |
| /// Indicates whether the executable has body marked as being asynchronous. | |
| isAsynchronous:bool (id: 27); | |
| /// Indicates whether the executable is declared using the `const` keyword. | |
| isConst:bool (id: 12); | |
| /// Indicates whether the executable is declared using the `external` keyword. | |
| isExternal:bool (id: 11); | |
| /// Indicates whether the executable is declared using the `factory` keyword. | |
| isFactory:bool (id: 8); | |
| /// Indicates whether the executable has body marked as being a generator. | |
| isGenerator:bool (id: 28); | |
| /// Indicates whether the executable is a redirected constructor. | |
| isRedirectedConstructor:bool (id: 13); | |
| /// Indicates whether the executable is declared using the `static` keyword. | |
| /// | |
| /// Note that for top level executables, this flag is false, since they are | |
| /// not declared using the `static` keyword (even though they are considered | |
| /// static for semantic purposes). | |
| isStatic:bool (id: 9); | |
| /// The kind of the executable (function/method, getter, setter, or | |
| /// constructor). | |
| kind:UnlinkedExecutableKind (id: 4); | |
| /// The list of local functions. | |
| localFunctions:[UnlinkedExecutable] (id: 18); | |
| /// The list of local labels. | |
| localLabels:[string] (id: 22, deprecated); | |
| /// The list of local variables. | |
| localVariables:[UnlinkedVariable] (id: 19, deprecated); | |
| /// Name of the executable. For setters, this includes the trailing "=". For | |
| /// named constructors, this excludes the class name and excludes the ".". | |
| /// For unnamed constructors, this is the empty string. | |
| name:string (id: 1); | |
| /// If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty, | |
| /// the offset of the end of the constructor name. Otherwise zero. | |
| nameEnd:uint (id: 23); | |
| /// Offset of the executable name relative to the beginning of the file. For | |
| /// named constructors, this excludes the class name and excludes the ".". | |
| /// For unnamed constructors, this is the offset of the class name (i.e. the | |
| /// offset of the second "C" in "class C { C(); }"). | |
| nameOffset:uint (id: 0); | |
| /// Parameters of the executable, if any. Note that getters have no | |
| /// parameters (hence this will be the empty list), and setters have a single | |
| /// parameter. | |
| parameters:[UnlinkedParam] (id: 2); | |
| /// If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty, | |
| /// the offset of the period before the constructor name. Otherwise zero. | |
| periodOffset:uint (id: 24); | |
| /// If [isRedirectedConstructor] and [isFactory] are both `true`, the | |
| /// constructor to which this constructor redirects; otherwise empty. | |
| redirectedConstructor:EntityRef (id: 15); | |
| /// If [isRedirectedConstructor] is `true` and [isFactory] is `false`, the | |
| /// name of the constructor that this constructor redirects to; otherwise | |
| /// empty. | |
| redirectedConstructorName:string (id: 17); | |
| /// Declared return type of the executable. Absent if the executable is a | |
| /// constructor or the return type is implicit. Absent for executables | |
| /// associated with variable initializers and closures, since these | |
| /// executables may have return types that are not accessible via direct | |
| /// imports. | |
| returnType:EntityRef (id: 3); | |
| /// Type parameters of the executable, if any. Empty if support for generic | |
| /// method syntax is disabled. | |
| typeParameters:[UnlinkedTypeParam] (id: 16); | |
| /// If a local function, the length of the visible range; zero otherwise. | |
| visibleLength:uint (id: 20); | |
| /// If a local function, the beginning of the visible range; zero otherwise. | |
| visibleOffset:uint (id: 21); | |
| } | |
| /// Unlinked summary information about an export declaration (stored outside | |
| /// [UnlinkedPublicNamespace]). | |
| table UnlinkedExportNonPublic { | |
| /// Annotations for this export directive. | |
| annotations:[UnlinkedExpr] (id: 3); | |
| /// Offset of the "export" keyword. | |
| offset:uint (id: 0); | |
| /// End of the URI string (including quotes) relative to the beginning of the | |
| /// file. | |
| uriEnd:uint (id: 1); | |
| /// Offset of the URI string (including quotes) relative to the beginning of | |
| /// the file. | |
| uriOffset:uint (id: 2); | |
| } | |
| /// Unlinked summary information about an export declaration (stored inside | |
| /// [UnlinkedPublicNamespace]). | |
| table UnlinkedExportPublic { | |
| /// Combinators contained in this export declaration. | |
| combinators:[UnlinkedCombinator] (id: 1); | |
| /// Configurations used to control which library will actually be loaded at | |
| /// run-time. | |
| configurations:[UnlinkedConfiguration] (id: 2); | |
| /// URI used in the source code to reference the exported library. | |
| uri:string (id: 0); | |
| } | |
| /// Unlinked summary information about an expression. | |
| /// | |
| /// Expressions are represented using a simple stack-based language | |
| /// where [operations] is a sequence of operations to execute starting with an | |
| /// empty stack. Once all operations have been executed, the stack should | |
| /// contain a single value which is the value of the constant. Note that some | |
| /// operations consume additional data from the other fields of this class. | |
| table UnlinkedExpr { | |
| /// Sequence of operators used by assignment operations. | |
| assignmentOperators:[UnlinkedExprAssignOperator] (id: 6); | |
| /// Sequence of 64-bit doubles consumed by the operation `pushDouble`. | |
| doubles:[double] (id: 4); | |
| /// Sequence of unsigned 32-bit integers consumed by the operations | |
| /// `pushArgument`, `pushInt`, `shiftOr`, `concatenate`, `invokeConstructor`, | |
| /// `makeList`, and `makeMap`. | |
| ints:[uint] (id: 1); | |
| /// Indicates whether the expression is a valid potentially constant | |
| /// expression. | |
| isValidConst:bool (id: 5); | |
| /// Sequence of operations to execute (starting with an empty stack) to form | |
| /// the constant value. | |
| operations:[UnlinkedExprOperation] (id: 0); | |
| /// Sequence of language constructs consumed by the operations | |
| /// `pushReference`, `invokeConstructor`, `makeList`, and `makeMap`. Note | |
| /// that in the case of `pushReference` (and sometimes `invokeConstructor` the | |
| /// actual entity being referred to may be something other than a type. | |
| references:[EntityRef] (id: 2); | |
| /// String representation of the expression in a form suitable to be tokenized | |
| /// and parsed. | |
| sourceRepresentation:string (id: 7); | |
| /// Sequence of strings consumed by the operations `pushString` and | |
| /// `invokeConstructor`. | |
| strings:[string] (id: 3); | |
| } | |
| /// Unlinked summary information about an import declaration. | |
| table UnlinkedImport { | |
| /// Annotations for this import declaration. | |
| annotations:[UnlinkedExpr] (id: 8); | |
| /// Combinators contained in this import declaration. | |
| combinators:[UnlinkedCombinator] (id: 4); | |
| /// Configurations used to control which library will actually be loaded at | |
| /// run-time. | |
| configurations:[UnlinkedConfiguration] (id: 10); | |
| /// Indicates whether the import declaration uses the `deferred` keyword. | |
| isDeferred:bool (id: 9); | |
| /// Indicates whether the import declaration is implicit. | |
| isImplicit:bool (id: 5); | |
| /// If [isImplicit] is false, offset of the "import" keyword. If [isImplicit] | |
| /// is true, zero. | |
| offset:uint (id: 0); | |
| /// Offset of the prefix name relative to the beginning of the file, or zero | |
| /// if there is no prefix. | |
| prefixOffset:uint (id: 6); | |
| /// Index into [UnlinkedUnit.references] of the prefix declared by this | |
| /// import declaration, or zero if this import declaration declares no prefix. | |
| /// | |
| /// Note that multiple imports can declare the same prefix. | |
| prefixReference:uint (id: 7); | |
| /// URI used in the source code to reference the imported library. | |
| uri:string (id: 1); | |
| /// End of the URI string (including quotes) relative to the beginning of the | |
| /// file. If [isImplicit] is true, zero. | |
| uriEnd:uint (id: 2); | |
| /// Offset of the URI string (including quotes) relative to the beginning of | |
| /// the file. If [isImplicit] is true, zero. | |
| uriOffset:uint (id: 3); | |
| } | |
| /// Unlinked summary information about a function parameter. | |
| table UnlinkedParam { | |
| /// Annotations for this parameter. | |
| annotations:[UnlinkedExpr] (id: 9); | |
| /// Code range of the parameter. | |
| codeRange:CodeRange (id: 7); | |
| /// If the parameter has a default value, the source text of the constant | |
| /// expression in the default value. Otherwise the empty string. | |
| defaultValueCode:string (id: 13); | |
| /// If this parameter's type is inferable, nonzero slot id identifying which | |
| /// entry in [LinkedLibrary.types] contains the inferred type. If there is no | |
| /// matching entry in [LinkedLibrary.types], then no type was inferred for | |
| /// this variable, so its static type is `dynamic`. | |
| /// | |
| /// Note that although strong mode considers initializing formals to be | |
| /// inferable, they are not marked as such in the summary; if their type is | |
| /// not specified, they always inherit the static type of the corresponding | |
| /// field. | |
| inferredTypeSlot:uint (id: 2); | |
| /// If this is a parameter of an instance method, a nonzero slot id which is | |
| /// unique within this compilation unit. If this id is found in | |
| /// [LinkedUnit.parametersInheritingCovariant], then this parameter inherits | |
| /// `@covariant` behavior from a base class. | |
| /// | |
| /// Otherwise, zero. | |
| inheritsCovariantSlot:uint (id: 14); | |
| /// The synthetic initializer function of the parameter. Absent if the | |
| /// variable does not have an initializer. | |
| initializer:UnlinkedExecutable (id: 12); | |
| /// Indicates whether this parameter is explicitly marked as being covariant. | |
| isExplicitlyCovariant:bool (id: 15); | |
| /// Indicates whether the parameter is declared using the `final` keyword. | |
| isFinal:bool (id: 16); | |
| /// Indicates whether this is a function-typed parameter. A parameter is | |
| /// function-typed if the declaration of the parameter has explicit formal | |
| /// parameters | |
| /// ``` | |
| /// int functionTyped(int p) | |
| /// ``` | |
| /// but is not function-typed if it does not, even if the type of the | |
| /// parameter is a function type. | |
| isFunctionTyped:bool (id: 5); | |
| /// Indicates whether this is an initializing formal parameter (i.e. it is | |
| /// declared using `this.` syntax). | |
| isInitializingFormal:bool (id: 6); | |
| /// Kind of the parameter. | |
| kind:UnlinkedParamKind (id: 4); | |
| /// Name of the parameter. | |
| name:string (id: 0); | |
| /// Offset of the parameter name relative to the beginning of the file. | |
| nameOffset:uint (id: 1); | |
| /// If [isFunctionTyped] is `true`, the parameters of the function type. | |
| parameters:[UnlinkedParam] (id: 8); | |
| /// If [isFunctionTyped] is `true`, the declared return type. If | |
| /// [isFunctionTyped] is `false`, the declared type. Absent if the type is | |
| /// implicit. | |
| type:EntityRef (id: 3); | |
| /// The length of the visible range. | |
| visibleLength:uint (id: 10); | |
| /// The beginning of the visible range. | |
| visibleOffset:uint (id: 11); | |
| } | |
| /// Unlinked summary information about a part declaration. | |
| table UnlinkedPart { | |
| /// Annotations for this part declaration. | |
| annotations:[UnlinkedExpr] (id: 2); | |
| /// End of the URI string (including quotes) relative to the beginning of the | |
| /// file. | |
| uriEnd:uint (id: 0); | |
| /// Offset of the URI string (including quotes) relative to the beginning of | |
| /// the file. | |
| uriOffset:uint (id: 1); | |
| } | |
| /// Unlinked summary information about a specific name contributed by a | |
| /// compilation unit to a library's public namespace. | |
| /// | |
| /// TODO(paulberry): some of this information is redundant with information | |
| /// elsewhere in the summary. Consider reducing the redundancy to reduce | |
| /// summary size. | |
| table UnlinkedPublicName { | |
| /// The kind of object referred to by the name. | |
| kind:ReferenceKind (id: 1); | |
| /// If this [UnlinkedPublicName] is a class, the list of members which can be | |
| /// referenced statically - static fields, static methods, and constructors. | |
| /// Otherwise empty. | |
| /// | |
| /// Unnamed constructors are not included since they do not constitute a | |
| /// separate name added to any namespace. | |
| members:[UnlinkedPublicName] (id: 2); | |
| /// The name itself. | |
| name:string (id: 0); | |
| /// If the entity being referred to is generic, the number of type parameters | |
| /// it accepts. Otherwise zero. | |
| numTypeParameters:uint (id: 3); | |
| } | |
| /// Unlinked summary information about what a compilation unit contributes to a | |
| /// library's public namespace. This is the subset of [UnlinkedUnit] that is | |
| /// required from dependent libraries in order to perform prelinking. | |
| table UnlinkedPublicNamespace { | |
| /// Export declarations in the compilation unit. | |
| exports:[UnlinkedExportPublic] (id: 2); | |
| /// Public names defined in the compilation unit. | |
| /// | |
| /// TODO(paulberry): consider sorting these names to reduce unnecessary | |
| /// relinking. | |
| names:[UnlinkedPublicName] (id: 0); | |
| /// URIs referenced by part declarations in the compilation unit. | |
| parts:[string] (id: 1); | |
| } | |
| /// Unlinked summary information about a name referred to in one library that | |
| /// might be defined in another. | |
| table UnlinkedReference { | |
| /// Name of the entity being referred to. For the pseudo-type `dynamic`, the | |
| /// string is "dynamic". For the pseudo-type `void`, the string is "void". | |
| /// For the pseudo-type `bottom`, the string is "*bottom*". | |
| name:string (id: 0); | |
| /// Prefix used to refer to the entity, or zero if no prefix is used. This is | |
| /// an index into [UnlinkedUnit.references]. | |
| /// | |
| /// Prefix references must always point backward; that is, for all i, if | |
| /// UnlinkedUnit.references[i].prefixReference != 0, then | |
| /// UnlinkedUnit.references[i].prefixReference < i. | |
| prefixReference:uint (id: 1); | |
| } | |
| /// TODO(scheglov) document | |
| table UnlinkedTokens { | |
| /// The token that corresponds to this token, or `0` if this token is not | |
| /// the first of a pair of matching tokens (such as parentheses). | |
| endGroup:[uint] (id: 0); | |
| /// Return `true` if this token is a synthetic token. A synthetic token is a | |
| /// token that was introduced by the parser in order to recover from an error | |
| /// in the code. | |
| isSynthetic:[ubyte] (id: 1); | |
| kind:[UnlinkedTokenKind] (id: 2); | |
| length:[uint] (id: 3); | |
| lexeme:[string] (id: 4); | |
| /// The next token in the token stream, `0` for [UnlinkedTokenType.EOF] or | |
| /// the last comment token. | |
| next:[uint] (id: 5); | |
| offset:[uint] (id: 6); | |
| /// The first comment token in the list of comments that precede this token, | |
| /// or `0` if there are no comments preceding this token. Additional comments | |
| /// can be reached by following the token stream using [next] until `0` is | |
| /// reached. | |
| precedingComment:[uint] (id: 7); | |
| type:[UnlinkedTokenType] (id: 8); | |
| } | |
| /// Unlinked summary information about a typedef declaration. | |
| table UnlinkedTypedef { | |
| /// Annotations for this typedef. | |
| annotations:[UnlinkedExpr] (id: 4); | |
| /// Code range of the typedef. | |
| codeRange:CodeRange (id: 7); | |
| /// Documentation comment for the typedef, or `null` if there is no | |
| /// documentation comment. | |
| documentationComment:UnlinkedDocumentationComment (id: 6); | |
| /// Name of the typedef. | |
| name:string (id: 0); | |
| /// Offset of the typedef name relative to the beginning of the file. | |
| nameOffset:uint (id: 1); | |
| /// If the typedef might not be simply bounded, a nonzero slot id which is | |
| /// unique within this compilation unit. If this id is found in | |
| /// [LinkedUnit.notSimplyBounded], then at least one of this typedef's type | |
| /// parameters is not simply bounded, hence this typedef can't be used as a | |
| /// raw type when specifying the bound of a type parameter. | |
| /// | |
| /// Otherwise, zero. | |
| notSimplyBoundedSlot:uint (id: 9); | |
| /// Parameters of the executable, if any. | |
| parameters:[UnlinkedParam] (id: 3); | |
| /// If [style] is [TypedefStyle.functionType], the return type of the typedef. | |
| /// If [style] is [TypedefStyle.genericFunctionType], the function type being | |
| /// defined. | |
| returnType:EntityRef (id: 2); | |
| /// The style of the typedef. | |
| style:TypedefStyle (id: 8); | |
| /// Type parameters of the typedef, if any. | |
| typeParameters:[UnlinkedTypeParam] (id: 5); | |
| } | |
| /// Unlinked summary information about a type parameter declaration. | |
| table UnlinkedTypeParam { | |
| /// Annotations for this type parameter. | |
| annotations:[UnlinkedExpr] (id: 3); | |
| /// Bound of the type parameter, if a bound is explicitly declared. Otherwise | |
| /// null. | |
| bound:EntityRef (id: 2); | |
| /// Code range of the type parameter. | |
| codeRange:CodeRange (id: 4); | |
| /// Name of the type parameter. | |
| name:string (id: 0); | |
| /// Offset of the type parameter name relative to the beginning of the file. | |
| nameOffset:uint (id: 1); | |
| } | |
| /// Unlinked summary information about a compilation unit ("part file"). | |
| table UnlinkedUnit { | |
| /// MD5 hash of the non-informative fields of the [UnlinkedUnit] (not | |
| /// including this one) as 16 unsigned 8-bit integer values. This can be used | |
| /// to identify when the API of a unit may have changed. | |
| apiSignature:[uint] (id: 19); | |
| /// Classes declared in the compilation unit. | |
| classes:[UnlinkedClass] (id: 2); | |
| /// Code range of the unit. | |
| codeRange:CodeRange (id: 15); | |
| /// Enums declared in the compilation unit. | |
| enums:[UnlinkedEnum] (id: 12); | |
| /// Top level executable objects (functions, getters, and setters) declared in | |
| /// the compilation unit. | |
| executables:[UnlinkedExecutable] (id: 4); | |
| /// Export declarations in the compilation unit. | |
| exports:[UnlinkedExportNonPublic] (id: 13); | |
| /// If this compilation unit was summarized in fallback mode, the path where | |
| /// the compilation unit may be found on disk. Otherwise empty. | |
| /// | |
| /// When this field is non-empty, all other fields in the data structure have | |
| /// their default values. | |
| fallbackModePath:string (id: 16, deprecated); | |
| /// Import declarations in the compilation unit. | |
| imports:[UnlinkedImport] (id: 5); | |
| /// Indicates whether this compilation unit is opted into NNBD. | |
| isNNBD:bool (id: 21); | |
| /// Indicates whether the unit contains a "part of" declaration. | |
| isPartOf:bool (id: 18); | |
| /// Annotations for the library declaration, or the empty list if there is no | |
| /// library declaration. | |
| libraryAnnotations:[UnlinkedExpr] (id: 14); | |
| /// Documentation comment for the library, or `null` if there is no | |
| /// documentation comment. | |
| libraryDocumentationComment:UnlinkedDocumentationComment (id: 9); | |
| /// Name of the library (from a "library" declaration, if present). | |
| libraryName:string (id: 6); | |
| /// Length of the library name as it appears in the source code (or 0 if the | |
| /// library has no name). | |
| libraryNameLength:uint (id: 7); | |
| /// Offset of the library name relative to the beginning of the file (or 0 if | |
| /// the library has no name). | |
| libraryNameOffset:uint (id: 8); | |
| /// Offsets of the first character of each line in the source code. | |
| lineStarts:[uint] (id: 17); | |
| /// Mixins declared in the compilation unit. | |
| mixins:[UnlinkedClass] (id: 20); | |
| /// Part declarations in the compilation unit. | |
| parts:[UnlinkedPart] (id: 11); | |
| /// Unlinked public namespace of this compilation unit. | |
| publicNamespace:UnlinkedPublicNamespace (id: 0); | |
| /// Top level and prefixed names referred to by this compilation unit. The | |
| /// zeroth element of this array is always populated and is used to represent | |
| /// the absence of a reference in places where a reference is optional (for | |
| /// example [UnlinkedReference.prefixReference or | |
| /// UnlinkedImport.prefixReference]). | |
| references:[UnlinkedReference] (id: 1); | |
| /// Typedefs declared in the compilation unit. | |
| typedefs:[UnlinkedTypedef] (id: 10); | |
| /// Top level variables declared in the compilation unit. | |
| variables:[UnlinkedVariable] (id: 3); | |
| } | |
| /// Unlinked summary information about a compilation unit. | |
| table UnlinkedUnit2 { | |
| /// The MD5 hash signature of the API portion of this unit. It depends on all | |
| /// tokens that might affect APIs of declarations in the unit. | |
| apiSignature:[uint] (id: 0); | |
| /// URIs of `export` directives. | |
| exports:[string] (id: 1); | |
| /// Is `true` if the unit contains a `library` directive. | |
| hasLibraryDirective:bool (id: 6); | |
| /// Is `true` if the unit contains a `part of` directive. | |
| hasPartOfDirective:bool (id: 3); | |
| /// URIs of `import` directives. | |
| imports:[string] (id: 2); | |
| /// Offsets of the first character of each line in the source code. | |
| lineStarts:[uint] (id: 5); | |
| /// URIs of `part` directives. | |
| parts:[string] (id: 4); | |
| } | |
| /// Unlinked summary information about a top level variable, local variable, or | |
| /// a field. | |
| table UnlinkedVariable { | |
| /// Annotations for this variable. | |
| annotations:[UnlinkedExpr] (id: 8); | |
| /// Code range of the variable. | |
| codeRange:CodeRange (id: 5); | |
| /// Documentation comment for the variable, or `null` if there is no | |
| /// documentation comment. | |
| documentationComment:UnlinkedDocumentationComment (id: 10); | |
| /// If this variable is inferable, nonzero slot id identifying which entry in | |
| /// [LinkedLibrary.types] contains the inferred type for this variable. If | |
| /// there is no matching entry in [LinkedLibrary.types], then no type was | |
| /// inferred for this variable, so its static type is `dynamic`. | |
| inferredTypeSlot:uint (id: 9); | |
| /// If this is an instance non-final field, a nonzero slot id which is unique | |
| /// within this compilation unit. If this id is found in | |
| /// [LinkedUnit.parametersInheritingCovariant], then the parameter of the | |
| /// synthetic setter inherits `@covariant` behavior from a base class. | |
| /// | |
| /// Otherwise, zero. | |
| inheritsCovariantSlot:uint (id: 15); | |
| /// The synthetic initializer function of the variable. Absent if the | |
| /// variable does not have an initializer. | |
| initializer:UnlinkedExecutable (id: 13); | |
| /// Indicates whether the variable is declared using the `const` keyword. | |
| isConst:bool (id: 6); | |
| /// Indicates whether this variable is declared using the `covariant` keyword. | |
| /// This should be false for everything except instance fields. | |
| isCovariant:bool (id: 14); | |
| /// Indicates whether the variable is declared using the `final` keyword. | |
| isFinal:bool (id: 7); | |
| /// Indicates whether the variable is declared using the `late` keyword. | |
| isLate:bool (id: 16); | |
| /// Indicates whether the variable is declared using the `static` keyword. | |
| /// | |
| /// Note that for top level variables, this flag is false, since they are not | |
| /// declared using the `static` keyword (even though they are considered | |
| /// static for semantic purposes). | |
| isStatic:bool (id: 4); | |
| /// Name of the variable. | |
| name:string (id: 0); | |
| /// Offset of the variable name relative to the beginning of the file. | |
| nameOffset:uint (id: 1); | |
| /// If this variable is propagable, nonzero slot id identifying which entry in | |
| /// [LinkedLibrary.types] contains the propagated type for this variable. If | |
| /// there is no matching entry in [LinkedLibrary.types], then this variable's | |
| /// propagated type is the same as its declared type. | |
| /// | |
| /// Non-propagable variables have a [propagatedTypeSlot] of zero. | |
| propagatedTypeSlot:uint (id: 2); | |
| /// Declared type of the variable. Absent if the type is implicit. | |
| type:EntityRef (id: 3); | |
| /// If a local variable, the length of the visible range; zero otherwise. | |
| visibleLength:uint (id: 11, deprecated); | |
| /// If a local variable, the beginning of the visible range; zero otherwise. | |
| visibleOffset:uint (id: 12, deprecated); | |
| } | |
| root_type PackageBundle; | |
| file_identifier "PBdl"; |