mirror of
https://github.com/dlang-community/D-Scanner.git
synced 2025-05-07 03:07:05 +03:00
Move everything under package dscanner
(#526)
* Move everything under package `dscanner` * Fix .gitignore * Fix .dscanner.ini
This commit is contained in:
parent
8463973f91
commit
2be1a1f22f
66 changed files with 267 additions and 264 deletions
55
src/dscanner/analysis/enumarrayliteral.d
Normal file
55
src/dscanner/analysis/enumarrayliteral.d
Normal file
|
@ -0,0 +1,55 @@
|
|||
// Copyright Brian Schott (Hackerpilot) 2014.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
module dscanner.analysis.enumarrayliteral;
|
||||
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import dscanner.analysis.base;
|
||||
import std.algorithm : canFind, map;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
||||
void doNothing(string, size_t, size_t, string, bool)
|
||||
{
|
||||
}
|
||||
|
||||
class EnumArrayLiteralCheck : BaseAnalyzer
|
||||
{
|
||||
alias visit = BaseAnalyzer.visit;
|
||||
|
||||
this(string fileName, const(Scope)* sc, bool skipTests = false)
|
||||
{
|
||||
super(fileName, sc, skipTests);
|
||||
}
|
||||
|
||||
bool looking;
|
||||
|
||||
mixin visitTemplate!ClassDeclaration;
|
||||
mixin visitTemplate!InterfaceDeclaration;
|
||||
mixin visitTemplate!UnionDeclaration;
|
||||
mixin visitTemplate!StructDeclaration;
|
||||
|
||||
override void visit(const AutoDeclaration autoDec)
|
||||
{
|
||||
if (autoDec.storageClasses.canFind!(a => a.token == tok!"enum"))
|
||||
{
|
||||
foreach (part; autoDec.parts)
|
||||
{
|
||||
if (part.initializer is null)
|
||||
continue;
|
||||
if (part.initializer.nonVoidInitializer is null)
|
||||
continue;
|
||||
if (part.initializer.nonVoidInitializer.arrayInitializer is null)
|
||||
continue;
|
||||
addErrorMessage(part.identifier.line, part.identifier.column,
|
||||
"dscanner.performance.enum_array_literal",
|
||||
"This enum may lead to unnecessary allocation at run-time."
|
||||
~ " Use 'static immutable "
|
||||
~ part.identifier.text ~ " = [ ...' instead.");
|
||||
}
|
||||
}
|
||||
autoDec.accept(this);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue