Edit

kc3-lang/angle/src/compiler/preprocessor/DiagnosticsBase.h

Branch :

  • Show log

    Commit

  • Author : Olli Etuaho
    Date : 2015-09-22 16:10:07
    Hash : 2f6ddf31
    Message : Allow double underscore in macro names Double underscore is allowed according to GLSL ES 3.10, and based on Khronos discussions the intent is that this should also apply to older specs. The dEQP tests also check this, and WebGL tests that check the opposite were recently removed. The error is changed into a warning. BUG=angleproject:989 TEST=angle_unittests dEQP-GLES3.functional.shaders.preprocessor.* (2 tests start passing) dEQP-GLES2.functional.shaders.preprocessor.* (2 tests start passing) Change-Id: I582c01b4adc8fc416354351e02b776f2cc602408 Reviewed-on: https://chromium-review.googlesource.com/300965 Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com>

  • src/compiler/preprocessor/DiagnosticsBase.h
  • //
    // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    #ifndef COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_
    #define COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_
    
    #include <string>
    
    namespace pp
    {
    
    struct SourceLocation;
    
    // Base class for reporting diagnostic messages.
    // Derived classes are responsible for formatting and printing the messages.
    class Diagnostics
    {
      public:
        enum Severity
        {
            PP_ERROR,
            PP_WARNING
        };
        enum ID
        {
            PP_ERROR_BEGIN,
            PP_INTERNAL_ERROR,
            PP_OUT_OF_MEMORY,
            PP_INVALID_CHARACTER,
            PP_INVALID_NUMBER,
            PP_INTEGER_OVERFLOW,
            PP_FLOAT_OVERFLOW,
            PP_TOKEN_TOO_LONG,
            PP_INVALID_EXPRESSION,
            PP_DIVISION_BY_ZERO,
            PP_EOF_IN_COMMENT,
            PP_UNEXPECTED_TOKEN,
            PP_DIRECTIVE_INVALID_NAME,
            PP_MACRO_NAME_RESERVED,
            PP_MACRO_REDEFINED,
            PP_MACRO_PREDEFINED_REDEFINED,
            PP_MACRO_PREDEFINED_UNDEFINED,
            PP_MACRO_UNTERMINATED_INVOCATION,
            PP_MACRO_TOO_FEW_ARGS,
            PP_MACRO_TOO_MANY_ARGS,
            PP_MACRO_DUPLICATE_PARAMETER_NAMES,
            PP_CONDITIONAL_ENDIF_WITHOUT_IF,
            PP_CONDITIONAL_ELSE_WITHOUT_IF,
            PP_CONDITIONAL_ELSE_AFTER_ELSE,
            PP_CONDITIONAL_ELIF_WITHOUT_IF,
            PP_CONDITIONAL_ELIF_AFTER_ELSE,
            PP_CONDITIONAL_UNTERMINATED,
            PP_CONDITIONAL_UNEXPECTED_TOKEN,
            PP_INVALID_EXTENSION_NAME,
            PP_INVALID_EXTENSION_BEHAVIOR,
            PP_INVALID_EXTENSION_DIRECTIVE,
            PP_INVALID_VERSION_NUMBER,
            PP_INVALID_VERSION_DIRECTIVE,
            PP_VERSION_NOT_FIRST_STATEMENT,
            PP_VERSION_NOT_FIRST_LINE_ESSL3,
            PP_INVALID_LINE_NUMBER,
            PP_INVALID_FILE_NUMBER,
            PP_INVALID_LINE_DIRECTIVE,
            PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL3,
            PP_ERROR_END,
    
            PP_WARNING_BEGIN,
            PP_EOF_IN_DIRECTIVE,
            PP_UNRECOGNIZED_PRAGMA,
            PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL1,
            PP_WARNING_MACRO_NAME_RESERVED,
            PP_WARNING_END
        };
    
        virtual ~Diagnostics();
    
        void report(ID id, const SourceLocation &loc, const std::string &text);
    
      protected:
        Severity severity(ID id);
        std::string message(ID id);
    
        virtual void print(ID id,
                           const SourceLocation &loc,
                           const std::string &text) = 0;
    };
    
    }  // namespace pp
    
    #endif  // COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_