# 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)
count.#count
d
dart.dev
dart2js_server
dart:ffi
dart_runner
dartbug.com
dname
e.g
enum's
f
ffi
flutter_runner
futureor
h
https
interop
intervening
js_util
libraries.json
list.filled
loadlibrary
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
