mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
Auto merge of #31530 - dirk:dirk/restrict-matching-of-cfg-opts, r=alexcrichton
Fixes #31497.
This commit is contained in:
commit
17d284b4b5
@ -59,7 +59,7 @@ RUSTC_CRATES := rustc rustc_typeck rustc_mir rustc_borrowck rustc_resolve rustc_
|
||||
rustc_data_structures rustc_front rustc_platform_intrinsics \
|
||||
rustc_plugin rustc_metadata rustc_passes
|
||||
HOST_CRATES := syntax syntax_ext $(RUSTC_CRATES) rustdoc fmt_macros
|
||||
TOOLS := compiletest rustdoc rustc rustbook error-index-generator
|
||||
TOOLS := compiletest rustdoc rustc rustbook error_index_generator
|
||||
|
||||
DEPS_core :=
|
||||
DEPS_alloc := core libc alloc_system
|
||||
@ -120,12 +120,12 @@ TOOL_DEPS_compiletest := test getopts
|
||||
TOOL_DEPS_rustdoc := rustdoc
|
||||
TOOL_DEPS_rustc := rustc_driver
|
||||
TOOL_DEPS_rustbook := std rustdoc
|
||||
TOOL_DEPS_error-index-generator := rustdoc syntax serialize
|
||||
TOOL_DEPS_error_index_generator := rustdoc syntax serialize
|
||||
TOOL_SOURCE_compiletest := $(S)src/compiletest/compiletest.rs
|
||||
TOOL_SOURCE_rustdoc := $(S)src/driver/driver.rs
|
||||
TOOL_SOURCE_rustc := $(S)src/driver/driver.rs
|
||||
TOOL_SOURCE_rustbook := $(S)src/rustbook/main.rs
|
||||
TOOL_SOURCE_error-index-generator := $(S)src/error-index-generator/main.rs
|
||||
TOOL_SOURCE_error_index_generator := $(S)src/error_index_generator/main.rs
|
||||
|
||||
ONLY_RLIB_core := 1
|
||||
ONLY_RLIB_libc := 1
|
||||
|
@ -52,7 +52,7 @@ PKG_FILES := \
|
||||
doc \
|
||||
driver \
|
||||
etc \
|
||||
error-index-generator \
|
||||
error_index_generator \
|
||||
$(foreach crate,$(CRATES),lib$(crate)) \
|
||||
libcollectionstest \
|
||||
libcoretest \
|
||||
|
@ -59,8 +59,8 @@ RUSTBOOK_EXE = $(HBIN2_H_$(CFG_BUILD))/rustbook$(X_$(CFG_BUILD))
|
||||
# ./configure
|
||||
RUSTBOOK = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(RUSTBOOK_EXE)
|
||||
|
||||
# The error-index-generator executable...
|
||||
ERR_IDX_GEN_EXE = $(HBIN2_H_$(CFG_BUILD))/error-index-generator$(X_$(CFG_BUILD))
|
||||
# The error_index_generator executable...
|
||||
ERR_IDX_GEN_EXE = $(HBIN2_H_$(CFG_BUILD))/error_index_generator$(X_$(CFG_BUILD))
|
||||
ERR_IDX_GEN = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(ERR_IDX_GEN_EXE)
|
||||
ERR_IDX_GEN_MD = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(ERR_IDX_GEN_EXE) markdown
|
||||
|
||||
@ -221,9 +221,9 @@ error-index: doc/error-index.html
|
||||
# Metadata used to generate the index is created as a side effect of
|
||||
# the build so this depends on every crate being up to date.
|
||||
doc/error-index.html: $(ERR_IDX_GEN_EXE) $(CSREQ$(2)_T_$(CFG_BUILD)_H_$(CFG_BUILD)) | doc/
|
||||
$(Q)$(call E, error-index-generator: $@)
|
||||
$(Q)$(call E, error_index_generator: $@)
|
||||
$(Q)$(ERR_IDX_GEN)
|
||||
|
||||
doc/error-index.md: $(ERR_IDX_GEN_EXE) $(CSREQ$(2)_T_$(CFG_BUILD)_H_$(CFG_BUILD)) | doc/
|
||||
$(Q)$(call E, error-index-generator: $@)
|
||||
$(Q)$(call E, error_index_generator: $@)
|
||||
$(Q)$(ERR_IDX_GEN_MD)
|
||||
|
@ -82,7 +82,7 @@ define PREPARE_MAN
|
||||
|
||||
endef
|
||||
|
||||
PREPARE_TOOLS = $(filter-out compiletest rustbook error-index-generator, $(TOOLS))
|
||||
PREPARE_TOOLS = $(filter-out compiletest rustbook error_index_generator, $(TOOLS))
|
||||
|
||||
|
||||
# $(1) is tool
|
||||
|
@ -28,6 +28,7 @@ use syntax::attr;
|
||||
use syntax::attr::AttrMetaMethods;
|
||||
use syntax::errors::{ColorConfig, Handler};
|
||||
use syntax::parse;
|
||||
use syntax::parse::lexer::Reader;
|
||||
use syntax::parse::token::InternedString;
|
||||
use syntax::feature_gate::UnstableFeatures;
|
||||
|
||||
@ -906,10 +907,19 @@ pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
|
||||
// Convert strings provided as --cfg [cfgspec] into a crate_cfg
|
||||
pub fn parse_cfgspecs(cfgspecs: Vec<String> ) -> ast::CrateConfig {
|
||||
cfgspecs.into_iter().map(|s| {
|
||||
parse::parse_meta_from_source_str("cfgspec".to_string(),
|
||||
s.to_string(),
|
||||
Vec::new(),
|
||||
&parse::ParseSess::new())
|
||||
let sess = parse::ParseSess::new();
|
||||
let mut parser = parse::new_parser_from_source_str(&sess,
|
||||
Vec::new(),
|
||||
"cfgspec".to_string(),
|
||||
s.to_string());
|
||||
let meta_item = panictry!(parser.parse_meta_item());
|
||||
|
||||
if !parser.reader.is_eof() {
|
||||
early_error(ErrorOutputType::default(), &format!("invalid --cfg argument: {}",
|
||||
s))
|
||||
}
|
||||
|
||||
meta_item
|
||||
}).collect::<ast::CrateConfig>()
|
||||
}
|
||||
|
||||
|
13
src/test/compile-fail/cfg-arg-invalid.rs
Normal file
13
src/test/compile-fail/cfg-arg-invalid.rs
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// compile-flags: --cfg a{b}
|
||||
// error-pattern: invalid --cfg argument: a{b}
|
||||
fn main() {}
|
Loading…
Reference in New Issue
Block a user