748cfdff7e
Move logic out into a ContextCache since we're not interested in caching at least two if not three things (the options, the options path, and optionally the builder). Move some convenience methods around accessing contexts into a mixin. Regarding some semantic decisions for finding analysis roots: * treat the analysis_options.yaml file as the analysis root if it exists * if it doesn't exist, assume the directory passed in is the root * if custom options are provided, assume they "overwrite" the others _in-place_. Tests to confirm this logic via excludes configurations with & without the yaml file specified, passing in the root in some cases and subdirectories in others. Also change to use PathFinder for handling wildcards in excludes. Bug: 31343,31344 Change-Id: I400fe30a1ec379f9040f812fc0bd9481d42a13cf Reviewed-on: https://dart-review.googlesource.com/41570 Commit-Queue: Mike Fairhurst <mfairhurst@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>