<!DOCTYPE html>
<!--
Welcome to a Clippy's lint list, at least the source code of it. If you are
interested in contributing to this website checkout `util/gh-pages/index.html`
inside the rust-clippy repository.

Otherwise, have a great day =^.^=
-->
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <meta name="description" content="A collection of lints to catch common mistakes and improve your Rust code.">

    <title>Clippy Lints</title>

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css"/>
    <link id="githubLightHighlight" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/github.min.css" disabled="true" />
    <link id="githubDarkHighlight" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/github-dark.min.css" disabled="true" />

    <!-- The files are not copied over into the Clippy project since they use the MPL-2.0 License -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/rust-lang/mdBook@0.4.46/src/theme/css/variables.css"/>
    <link id="styleHighlight" rel="stylesheet" href="https://cdn.jsdelivr.net/gh/rust-lang/mdBook@0.4.46/src/theme/highlight.css">
    <link id="styleNight" rel="stylesheet" href="https://cdn.jsdelivr.net/gh/rust-lang/mdBook@0.4.46/src/theme/tomorrow-night.css" disabled="true">
    <link id="styleAyu" rel="stylesheet" href="https://cdn.jsdelivr.net/gh/rust-lang/mdBook@0.4.46/src/theme/ayu-highlight.css" disabled="true">
    <style>
        blockquote { font-size: 1em; }
        [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { display: none !important; }

        .dropdown-menu {
            color: var(--fg);
            background: var(--theme-popup-bg);
            border: 1px solid var(--theme-popup-border);
        }

        .dropdown-menu .divider {
            background-color: var(--theme-popup-border);
        }

        .dropdown-menu .checkbox {
            display: block;
            white-space: nowrap;
            margin: 0;
        }
        .dropdown-menu .checkbox label {
            padding: 3px 20px;
            width: 100%;
        }

        .dropdown-menu .checkbox input {
            position: relative;
            margin: 0 0.5rem 0;
            padding: 0;
        }

        .dropdown-menu .checkbox:hover {
            background-color: var(--theme-hover);
        }

        div.panel div.panel-body button.dropdown-toggle {
            background: var(--searchbar-bg);
            color: var(--searchbar-fg);
            border-color: var(--theme-popup-border);
        }

        div.panel div.panel-body button.dropdown-toggle:hover {
            box-shadow: 0 0 3px var(--searchbar-shadow-color);
        }

        div.panel div.panel-body .open button.dropdown-toggle {
            background: var(--searchbar-bg);
            color: var(--searchbar-fg);
            border-color: var(--theme-popup-border);
            filter: brightness(90%);
        }

        .dropdown-toggle .badge {
            background-color: #777;
        }

        .panel-heading { cursor: pointer; }

        .panel-title { display: flex; flex-wrap: wrap;}
        .panel-title .label { display: inline-block; }

        .panel-title-name { flex: 1; min-width: 400px;}
        .panel-title-name span { vertical-align: bottom; }

        .panel .panel-title-name .anchor { display: none; }
        .panel:hover .panel-title-name .anchor { display: inline;}

        .search-control {
            margin-top: 15px;
        }

        @media (min-width: 992px) {
            .search-control {
                margin-top: 0;
                float: right;
            }
        }

        @media (min-width: 405px) {
            #upper-filters {
                display: flex;
            }
        }

        @media (max-width: 430px) {
            /* Turn the version filter list to the left */
            #version-filter-selector {
                right: 0;
                left: auto;
            }
        }

        @media (max-width: 412px) {
            #upper-filters,
            .panel-body .search-control  {
                padding-right: 8px;
                padding-left: 8px;
            }
        }

        .label {
            padding-top: 0.3em;
            padding-bottom: 0.3em;
        }

        .label-lint-group {
            min-width: 8em;
        }
        .label-lint-level {
            min-width: 4em;
        }

        .label-lint-level-allow {
            background-color: #5cb85c;
        }
        .label-lint-level-warn {
            background-color: #f0ad4e;
        }
        .label-lint-level-deny {
            background-color: #d9534f;
        }
        .label-lint-level-none {
            background-color: #777777;
            opacity: 0.5;
        }

        .label-group-deprecated {
            opacity: 0.5;
        }

        .label-doc-folding {
            color: #000;
            background-color: #fff;
            border: 1px solid var(--theme-popup-border);
        }
        .label-doc-folding:hover {
            background-color: #e6e6e6;
        }

        .lint-doc-md > h3 {
            border-top: 1px solid var(--theme-popup-border);
            padding: 10px 15px;
            margin: 0 -15px;
            font-size: 18px;
        }
        .lint-doc-md > h3:first-child {
            border-top: none;
            padding-top: 0px;
        }

        @media (max-width:749px) {
            .lint-additional-info-container {
                display: flex;
                flex-flow: column;
            }
            .lint-additional-info-item + .lint-additional-info-item {
                border-top: 1px solid var(--theme-popup-border);
            }
        }
        @media (min-width:750px) {
            .lint-additional-info-container {
                display: flex;
                flex-flow: row;
            }
            .lint-additional-info-item + .lint-additional-info-item {
                border-left: 1px solid var(--theme-popup-border);
            }
        }

        .lint-additional-info-item {
            display: inline-flex;
            min-width: 200px;
            flex-grow: 1;
            padding: 9px 5px 5px 15px;
        }

        .label-applicability {
            background-color: #777777;
            margin: auto 5px;
        }

        .label-version {
            background-color: #777777;
            margin: auto 5px;
            font-family: monospace;
        }

        details {
            border-radius: 4px;
            padding: .5em .5em 0;
        }

        code {
            white-space: pre !important;
        }

        summary {
            font-weight: bold;
            margin: -.5em -.5em 0;
            padding: .5em;
            display: revert;
        }

        details[open] {
            padding: .5em;
        }
    </style>
    <style>
        /* Expanding the mdBoom theme*/
        .light {
            --inline-code-bg: #f6f7f6;
        }
        .rust {
            --inline-code-bg: #f6f7f6;
        }
        .coal {
            --inline-code-bg: #1d1f21;
        }
        .navy {
            --inline-code-bg: #1d1f21;
        }
        .ayu {
            --inline-code-bg: #191f26;
        }

        .theme-dropdown {
            position: absolute;
            margin: 0.7em;
            z-index: 10;
        }

        /* Applying the mdBook theme */
        .theme-icon {
            text-align: center;
            width: 2em;
            height: 2em;
            line-height: 2em;
            border: solid 1px var(--icons);
            border-radius: 5px;
            user-select: none;
            cursor: pointer;
        }
        .theme-icon:hover {
            background: var(--theme-hover);
        }
        .theme-choice {
            display: none;
            list-style: none;
            border: 1px solid var(--theme-popup-border);
            border-radius: 5px;
            color: var(--fg);
            background: var(--theme-popup-bg);
            padding: 0 0;
            overflow: hidden;
        }

        .theme-dropdown.open .theme-choice {
            display: block;
        }

        .theme-choice > li {
            padding: 5px 10px;
            font-size: 0.8em;
            user-select: none;
            cursor: pointer;
        }

        .theme-choice > li:hover {
            background: var(--theme-hover);
        }

        .alert {
            color: var(--fg);
            background: var(--theme-hover);
            border: 1px solid var(--theme-popup-border);
        }
        .page-header {
            border-color: var(--theme-popup-border);
        }
        .panel-default > .panel-heading {
            background: var(--theme-hover);
            color: var(--fg);
            border: 1px solid var(--theme-popup-border);
        }
        .panel-default > .panel-heading:hover {
            filter: brightness(90%);
        }
        .list-group-item {
            background: 0%;
            border: 1px solid var(--theme-popup-border);
        }
        .panel, pre, hr {
            background: var(--bg);
            border: 1px solid var(--theme-popup-border);
        }

        #version-filter-selector .checkbox {
            display: flex;
        }

        #version-filter {
            min-width: available;
        }

        #version-filter li label {
            padding-right: 0;
            width: 35%;
        }

        .version-filter-input {
            height: 60%;
            width: 30%;
            text-align: center;
            border: none;
            border-bottom: 1px solid #000000;
        }

        #filter-label, .filter-clear {
            background: var(--searchbar-bg);
            color: var(--searchbar-fg);
            border-color: var(--theme-popup-border);
            filter: brightness(95%);
        }
        #filter-label:hover, .filter-clear:hover {
            filter: brightness(90%);
        }
        .filter-input {
            background: var(--searchbar-bg);
            color: var(--searchbar-fg);
            border-color: var(--theme-popup-border);
        }

        .filter-input::-webkit-input-placeholder,
        .filter-input::-moz-placeholder {
            color: var(--searchbar-fg);
            opacity: 30%;
        }

        :not(pre) > code {
            color: var(--inline-code-color);
            background-color: var(--inline-code-bg);
        }
        html {
            scrollbar-color: var(--scrollbar) var(--bg);
        }
        body {
            background: var(--bg);
            color: var(--fg);
        }

    </style>
</head>
<body ng-app="clippy" ng-controller="lintList">
    <div theme-dropdown class="theme-dropdown">
        <div id="theme-icon" class="theme-icon">&#128396;</div>
        <ul id="theme-menu" class="theme-choice">
            <li id="{{id}}" ng-repeat="(id, name) in themes" ng-click="selectTheme(id)">{{name}}</li>
        </ul>
    </div>

    <div class="container">
        <div class="page-header">
            <h1>Clippy Lints</h1>
        </div>

        <noscript>
            <div class="alert alert-danger" role="alert">
                Sorry, this site only works with JavaScript! :(
            </div>
        </noscript>

        <div ng-cloak>

            <div class="alert alert-info" role="alert" ng-if="loading">
                Loading&#x2026;
            </div>
            <div class="alert alert-danger" role="alert" ng-if="error">
                Error loading lints!
            </div>

            <div class="panel panel-default" ng-show="data">
                <div class="panel-body row">
                    <div id="upper-filters" class="col-12 col-md-4">
                        <div class="btn-group" filter-dropdown>
                            <button type="button" class="btn btn-default dropdown-toggle">
                                Lint levels <span class="badge">{{selectedValuesCount(levels)}}</span> <span class="caret"></span>
                            </button>
                            <ul class="dropdown-menu">
                                <li class="checkbox">
                                    <label ng-click="toggleLevels(true)">
                                        <input type="checkbox" class="invisible" />
                                        All
                                    </label>
                                </li>
                                <li class="checkbox">
                                    <label ng-click="toggleLevels(false)">
                                        <input type="checkbox" class="invisible" />
                                        None
                                    </label>
                                </li>
                                <li role="separator" class="divider"></li>
                                <li class="checkbox" ng-repeat="(level, enabled) in levels">
                                    <label class="text-capitalize">
                                        <input type="checkbox" ng-model="levels[level]" />
                                        {{level}}
                                    </label>
                                </li>
                            </ul>
                        </div>
                        <div class="btn-group" filter-dropdown>
                            <button type="button" class="btn btn-default dropdown-toggle">
                                Lint groups <span class="badge">{{selectedValuesCount(groups)}}</span> <span class="caret"></span>
                            </button>
                            <ul class="dropdown-menu">
                                <li class="checkbox">
                                    <label ng-click="toggleGroups(true)">
                                        <input type="checkbox" class="invisible" />
                                        All
                                    </label>
                                </li>
                                <li class="checkbox">
                                    <label ng-click="toggleGroups(false)">
                                        <input type="checkbox" class="invisible" />
                                        None
                                    </label>
                                </li>
                                <li role="separator" class="divider"></li>
                                <li class="checkbox" ng-repeat="(group, enabled) in groups">
                                    <label class="text-capitalize">
                                        <input type="checkbox" ng-model="groups[group]" />
                                        {{group}}
                                    </label>
                                </li>
                            </ul>
                        </div>
                        <div id="version-filter">
                            <div class="btn-group" filter-dropdown>
                                <button type="button" class="btn btn-default dropdown-toggle">
                                    Version
                                    <span id="version-filter-count" class="badge">
                                        {{versionFilterCount(versionFilters)}}
                                    </span>
                                    <span class="caret"></span>
                                </button>
                                <ul id="version-filter-selector" class="dropdown-menu">
                                    <li class="checkbox">
                                        <label ng-click="clearVersionFilters()">
                                            <input type="checkbox" class="invisible" />
                                            Clear filters
                                        </label>
                                    </li>
                                    <li role="separator" class="divider"></li>
                                    <li class="checkbox" ng-repeat="(filter, vars) in versionFilters">
                                        <label ng-attr-for="filter-{filter}">{{filter}}</label>
                                        <span>1.</span>
                                        <input type="number"
                                                min="29"
                                                ng-attr-id="filter-{filter}"
                                                class="version-filter-input form-control filter-input"
                                                maxlength="2"
                                                ng-model="versionFilters[filter].minorVersion"
                                                ng-model-options="{debounce: 50}"
                                                ng-change="updateVersionFilters()" />
                                        <span>.0</span>
                                    </li>
                                </ul>
                            </div>
                        </div>

                    </div>
                    <div class="col-12 col-md-7 search-control">
                        <div class="input-group">
                            <label class="input-group-addon" id="filter-label" for="search-input">Filter:</label>
                            <input type="text" class="form-control filter-input" placeholder="Keywords or search string" id="search-input" ng-model="search" ng-model-options="{debounce: 50}"/>
                            <span class="input-group-btn">
                                <button class="filter-clear btn" type="button" ng-click="search = ''">
                                    Clear
                                </button>
                            </span>
                        </div>
                    </div>
                </div>
            </div>
            <!-- The order of the filters should be from most likely to remove a lint to least likely to improve performance. -->
            <article class="panel panel-default" id="{{lint.id}}" ng-repeat="lint in data | filter:bySearch | filter:byGroups | filter:byLevels | filter:byVersion">
                <header class="panel-heading" ng-click="open[lint.id] = !open[lint.id]">
                    <h2 class="panel-title">
                        <div class="panel-title-name">
                            <span>{{lint.id}}</span>
                            <a href="#{{lint.id}}" class="anchor label label-default" ng-click="open[lint.id] = true; $event.stopPropagation()">&para;</a>
                            <a href="" id="clipboard-{{lint.id}}" class="anchor label label-default" ng-click="copyToClipboard(lint); $event.stopPropagation()">
                                &#128203;
                            </a>
                        </div>

                        <div class="panel-title-addons">
                            <span class="label label-lint-group label-default label-group-{{lint.group}}">{{lint.group}}</span>

                            <span class="label label-lint-level label-lint-level-{{lint.level}}">{{lint.level}}</span>


                            <span class="label label-doc-folding" ng-show="open[lint.id]">&minus;</span>
                            <span class="label label-doc-folding" ng-hide="open[lint.id]">&plus;</span>
                        </div>
                    </h2>
                </header>

                <div class="list-group lint-docs" ng-if="open[lint.id]" ng-class="{collapse: true, in: open[lint.id]}">
                    <div class="list-group-item lint-doc-md" ng-bind-html="lint.docs | markdown"></div>
                    <div class="lint-additional-info-container">
                        <!-- Applicability -->
                        <div class="lint-additional-info-item">
                            <span> Applicability: </span>
                            <span class="label label-default label-applicability">{{lint.applicability.applicability}}</span>
                            <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_lint_defs/enum.Applicability.html#variants">(?)</a>
                        </div>
                        <!-- Clippy version -->
                        <div class="lint-additional-info-item">
                            <span>{{lint.group == "deprecated" ? "Deprecated" : "Added"}} in: </span>
                            <span class="label label-default label-version">{{lint.version}}</span>
                        </div>
                        <!-- Open related issues -->
                        <div class="lint-additional-info-item">
                            <a href="https://github.com/rust-lang/rust-clippy/issues?q=is%3Aissue+{{lint.id}}">Related Issues</a>
                        </div>
                        <!-- Jump to source -->
                        <div class="lint-additional-info-item">
                            <a href="https://github.com/rust-lang/rust-clippy/blob/{{docVersion}}/clippy_lints/{{lint.id_span.path}}#L{{lint.id_span.line}}">View Source</a>
                        </div>
                    </div>
                </div>
            </article>
        </div>
    </div>

    <a href="https://github.com/rust-lang/rust-clippy">
        <img style="position: absolute; top: 0; right: 0; border: 0; clip-path: polygon(0% 0%, 100% 0%, 100% 100%);" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on Github"/>
    </a>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/markdown-it/12.3.2/markdown-it.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/rust.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.12/angular.min.js"></script>
    <script src="script.js"></script>
</body>
</html>
