# Copyright (c) 2019, 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.

# Blank lines and comments are ignored.
# Comments can also be inline like 'correct # this is ok'.
# Note that at least one space before the hash is required.

# Comments on a line by itself will be considered a header of the file and
# automatic tools might move it to the top of the file.

JS
adjusting
api
argument(s)
assigning
b
c
compilercontext.runincontext
compilesdk
constructor(s)
core
count.#count
d
dart.dev
dart2js_server
dart:ffi
dart_runner
dartbug.com
dname
e.g
enum's
f
ffi
flutter_runner
futureor
guides
h
https
interop
intervening
js_util
libraries.json
list.filled
loadlibrary
migrate
name.#name
name.stack
nameokempty
native('native
natively
nativetype
nnbd
nosuchmethod
num1%.3ms
o
opt
opts
outdated
part(s)
patch(es)
pubspec.yaml
re
sdksummary
solutions
stacktrace
stringokempty
struct<#name
structs
super.namedconstructor
supermixin
team
this.namedconstructor
this.x
type3.#name
u
unsound
v
x
