# Build artifacts and dependencies.
/.children
/.project
/Makefile
/base
/benchmarks-internal
/buildtools
/ipch
/out
/xcodebuild
/.flaky.log
/.debug.log
*.Makefile
*.opensdf
*.sdf
*.sln
*.suo
*.target.mk
*.host.mk
*.vcproj
*.vcxproj
*.vcxproj.filters
/*.vcxproj.user
*.stamp

# Gyp generated files
*.xcodeproj
*.intermediate

# Eclipse config files - also in all subdirectories.
.children
.project
.settings

# IntelliJ project files
*.iml
.idea
CMakeLists.txt
.clang_complete
cmake-build-debug

# Windows toolchain.
win_toolchain

# VS project files
.vs

# VSCode project files
.vscode
.history

# https://github.com/Dart-Code/Dart-Code/issues/1295
/analysis_options.yaml

# analysis server files
compile_commands.json

# GDB files
.gdb_history

# Clangd files
.cache/clangd
.clangd

# Built by chromebot and downloaded from Google Storage
client/tests/drt

# Compiled python binaries
*.pyc

# pydev project file.
.pydevproject

# From the Mac OS X Finder
.DS_Store

# Pub generated "packages" directories and files
packages
pubspec.lock

# Files for native assets auto-generated per checkout.
/.dart_tool/native_assets_builder/

# Files generated by pub and other dart tools.
.dart_tool/

# Generated by tools/generate_package_config.dart to include extra packages in
# the project.
pubspec_overrides.yaml

# Local pub storage
.pub

# Vim temporary swap files.
*.swp

# Kate temporary files.
*~
*.kate-swp

# Merge files.
*.orig
*.rej

# Generated files.
tools/dartium/out
tools/out
tools/xcodebuild
.test-outcome.log
/outline.dill
/generated/
/crash_logs/
/build/config/gclient_args.gni
/pkg/front_end/testcases/old_dills/
logs/logs.json
logs/results.json
.dart_tool/bisect_dart/
doc/api/
runtime/tools/heapsnapshot/.dart_tool
