# Copyright 2022 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """ Filters clang args to make them suitable for libclang. Rust involves several libclang-based tools that parse C++. We pass such tools our complete {{cflags}}, but a few of the arguments aren't appropriate for libclang (for example those which load plugins). This function filters them out. """ def filter_clang_args(clangargs): def do_filter(args): i = 0 while i < len(args): # Intercept plugin arguments if args[i] == '-Xclang': i += 1 if args[i] == '-add-plugin': pass elif args[i].startswith('-plugin-arg'): i += 2 else: yield args[i] i += 1 return list(do_filter(clangargs))