OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "tools/gn/header_checker.h" | 5 #include "tools/gn/header_checker.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 bool is_generated; | 30 bool is_generated; |
31 }; | 31 }; |
32 | 32 |
33 // If the given file is in the "gen" folder, trims this so it treats the gen | 33 // If the given file is in the "gen" folder, trims this so it treats the gen |
34 // directory as the source root: | 34 // directory as the source root: |
35 // //out/Debug/gen/foo/bar.h -> //foo/bar.h | 35 // //out/Debug/gen/foo/bar.h -> //foo/bar.h |
36 // If the file isn't in the generated root, returns the input unchanged. | 36 // If the file isn't in the generated root, returns the input unchanged. |
37 SourceFile RemoveRootGenDirFromFile(const Target* target, | 37 SourceFile RemoveRootGenDirFromFile(const Target* target, |
38 const SourceFile& file) { | 38 const SourceFile& file) { |
39 const SourceDir& gen = target->settings()->toolchain_gen_dir(); | 39 const SourceDir& gen = target->settings()->toolchain_gen_dir(); |
40 if (!gen.is_null() && StartsWithASCII(file.value(), gen.value(), true)) | 40 if (!gen.is_null() && base::StartsWithASCII(file.value(), gen.value(), true)) |
41 return SourceFile("//" + file.value().substr(gen.value().size())); | 41 return SourceFile("//" + file.value().substr(gen.value().size())); |
42 return file; | 42 return file; |
43 } | 43 } |
44 | 44 |
45 // This class makes InputFiles on the stack as it reads files to check. When | 45 // This class makes InputFiles on the stack as it reads files to check. When |
46 // we throw an error, the Err indicates a locatin which has a pointer to | 46 // we throw an error, the Err indicates a locatin which has a pointer to |
47 // an InputFile that must persist as long as the Err does. | 47 // an InputFile that must persist as long as the Err does. |
48 // | 48 // |
49 // To make this work, this function creates a clone of the InputFile managed | 49 // To make this work, this function creates a clone of the InputFile managed |
50 // by the InputFileManager so the error can refer to something that | 50 // by the InputFileManager so the error can refer to something that |
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
574 if (targets_with_other_toolchains.size() + | 574 if (targets_with_other_toolchains.size() + |
575 targets_with_matching_toolchains.size() > 1) | 575 targets_with_matching_toolchains.size() > 1) |
576 msg += "at least one of "; | 576 msg += "at least one of "; |
577 msg += "which should somehow be reachable."; | 577 msg += "which should somehow be reachable."; |
578 | 578 |
579 // Danger: must call CreatePersistentRange to put in Err. | 579 // Danger: must call CreatePersistentRange to put in Err. |
580 return Err(CreatePersistentRange(source_file, range), | 580 return Err(CreatePersistentRange(source_file, range), |
581 "Include not allowed.", msg); | 581 "Include not allowed.", msg); |
582 } | 582 } |
583 | 583 |
OLD | NEW |