forked from mirrors/gecko-dev
		
	 6f741939e8
			
		
	
	
		6f741939e8
		
	
	
	
	
		
			
			<!-- Please describe your changes on the following line: --> Rewrite the ban-type lint in Python. Question: Should the old ban-type lint written in rust be deleted? --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x ] `./mach build -d` does not report any errors - [x ] `./mach test-tidy` does not report any errors - [x ] These changes fix #15591 <!-- Either: --> - [ x] There are tests for these changes <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> Source-Repo: https://github.com/servo/servo Source-Revision: 261df34ced0bdcb8126994c8653ac101d1172085 --HG-- rename : servo/tests/compiletest/plugin/compile-fail/ban-domrefcell.rs => servo/python/tidy/servo_tidy_tests/ban-domrefcell.rs rename : servo/tests/compiletest/plugin/compile-fail/ban.rs => servo/python/tidy/servo_tidy_tests/ban.rs extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear extra : subtree_revision : adf4a3a1bb9570e342bcd4233445178fcf107802
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| //! Servo's compiler plugin/macro crate
 | |
| //!
 | |
| //! Attributes this crate provides:
 | |
| //!
 | |
| //!  - `#[derive(DenyPublicFields)]` : Forces all fields in a struct/enum to be private
 | |
| //!  - `#[derive(JSTraceable)]` : Auto-derives an implementation of `JSTraceable` for a struct in the script crate
 | |
| //!  - `#[must_root]` : Prevents data of the marked type from being used on the stack.
 | |
| //!                     See the lints module for more details
 | |
| //!  - `#[dom_struct]` : Implies #[derive(JSTraceable, DenyPublicFields)]`, and `#[must_root]`.
 | |
| //!                       Use this for structs that correspond to a DOM type
 | |
| 
 | |
| 
 | |
| #![deny(unsafe_code)]
 | |
| #![feature(box_syntax, plugin, plugin_registrar, rustc_private, slice_patterns)]
 | |
| 
 | |
| #[macro_use]
 | |
| extern crate rustc;
 | |
| extern crate rustc_plugin;
 | |
| extern crate syntax;
 | |
| 
 | |
| use rustc_plugin::Registry;
 | |
| use syntax::feature_gate::AttributeType::Whitelisted;
 | |
| 
 | |
| mod unrooted_must_root;
 | |
| /// Utilities for writing plugins
 | |
| mod utils;
 | |
| 
 | |
| #[plugin_registrar]
 | |
| pub fn plugin_registrar(reg: &mut Registry) {
 | |
|     reg.register_late_lint_pass(box unrooted_must_root::UnrootedPass::new());
 | |
|     reg.register_attribute("allow_unrooted_interior".to_string(), Whitelisted);
 | |
|     reg.register_attribute("must_root".to_string(), Whitelisted);
 | |
| }
 |