# 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
abispecificinteger
abispecificintegermapping
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
f
ffi
flutter_runner
futureor
guides
h
https
interact
interop
intervening
js_util
libraries.json
list.filled
loadlibrary
migrate
name.#name
name.stack
nameokempty
native('native
nativefieldwrapperclass
natively
nativetype
nnbd
nosuchmethod
num1%.3ms
o
opt
opts
outdated
part(s)
patch(es)
placing
pubspec.yaml
re
sdksummary
size
solutions
stacktrace
staticinterop
stringokempty
struct<#name
structs
super.namedconstructor
superinterface
supermixin
team
this.namedconstructor
this.x
type3.#name
u
unsound
v
x
