from static method

Danger<CitrusSymbolTable, CitrusSymbolTableException> from({
  1. Iterable<TextSymbol> textSymbolRoster = const [],
  2. Iterable<TemporarySymbol> temporarySymbolRoster = const [],
  3. Iterable<TextArraySymbol> textArraySymbolRoster = const [],
  4. Iterable<FragmentSymbol> fragmentSymbolRoster = const [],
  5. Iterable<FlagSymbol> flagSymbolRoster = const [],
  6. Iterable<ObjectSymbol> objectSymbolRoster = const [],
  7. Iterable<ObjectArraySymbol> objectArraySymbolRoster = const [],
})
  • CitrusSymbolTableExceptionA duplicate property name exist.

Implementation

static Danger<CitrusSymbolTable, CitrusSymbolTableException> from({
    Iterable<TextSymbol> textSymbolRoster = const [],
    Iterable<TemporarySymbol> temporarySymbolRoster = const [],
    Iterable<TextArraySymbol> textArraySymbolRoster = const [],
    Iterable<FragmentSymbol> fragmentSymbolRoster = const [],
    Iterable<FlagSymbol> flagSymbolRoster = const [],
    Iterable<ObjectSymbol> objectSymbolRoster = const [],
    Iterable<ObjectArraySymbol> objectArraySymbolRoster = const [],
}) {

    final log = Log(classLocation: CitrusSymbolTable, functionLocation: 'from');

    final result = CitrusSymbolTable.result(
        // CitrusSymbolRoster.result() を使わなくても CitrusSymbolTable.result() で validate される.
        CitrusSymbolRoster(textSymbolRoster),
        CitrusSymbolRoster(temporarySymbolRoster),
        CitrusSymbolRoster(textArraySymbolRoster),
        CitrusSymbolRoster(fragmentSymbolRoster),
        CitrusSymbolRoster(flagSymbolRoster),
        CitrusSymbolRoster(objectSymbolRoster),
        CitrusSymbolRoster(objectArraySymbolRoster),
    );
    log.add(result);

    return Danger.fromDanger(result, log);

}