Hash :
613b959d
Author :
Date :
2016-09-05T12:05:53
Clean up qualification order checks Move determining whether qualification order checks are relaxed to QualifierTypes.cpp. The ParseContext only needs to construct TTypeQualifierBuilder with the shader version as a parameter, and it will make the decision based on that. ParseContext still passes diagnostics to the TTypeQualifierBuilder functions that return variable qualification to make it more explicit when errors are generated. Also encapsulate looking for symbols in the AST inside compiler_test.cpp. BUG=angleproject:1442 TEST=angle_unittests Change-Id: I4190e6a680ace0cc0568a517e86353a95cc63c08 Reviewed-on: https://chromium-review.googlesource.com/380556 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
//
// Copyright (c) 2015 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.
//
// compiler_test.h:
// utilities for compiler unit tests.
#ifndef TESTS_TEST_UTILS_COMPILER_TEST_H_
#define TESTS_TEST_UTILS_COMPILER_TEST_H_
#include <map>
#include "gtest/gtest.h"
#include "angle_gl.h"
#include "compiler/translator/TranslatorESSL.h"
#include "GLSLANG/ShaderLang.h"
bool compileTestShader(GLenum type,
ShShaderSpec spec,
ShShaderOutput output,
const std::string &shaderString,
ShBuiltInResources *resources,
int compileOptions,
std::string *translatedCode,
std::string *infoLog);
bool compileTestShader(GLenum type,
ShShaderSpec spec,
ShShaderOutput output,
const std::string &shaderString,
int compileOptions,
std::string *translatedCode,
std::string *infoLog);
class MatchOutputCodeTest : public testing::Test
{
protected:
MatchOutputCodeTest(GLenum shaderType, int defaultCompileOptions, ShShaderOutput outputType);
void addOutputType(const ShShaderOutput outputType);
ShBuiltInResources *getResources();
// Compile functions clear any results from earlier calls to them.
void compile(const std::string &shaderString);
void compile(const std::string &shaderString, const int compileOptions);
bool foundInESSLCode(const char *stringToFind) const
{
return foundInCode(SH_ESSL_OUTPUT, stringToFind);
}
bool foundInGLSLCode(const char *stringToFind) const
{
return foundInCode(SH_GLSL_COMPATIBILITY_OUTPUT, stringToFind);
}
bool foundInCode(ShShaderOutput output, const char *stringToFind) const;
// Test that the string occurs for exactly expectedOccurrences times
bool foundInCode(ShShaderOutput output,
const char *stringToFind,
const int expectedOccurrences) const;
// Test that the string is found in all outputs
bool foundInCode(const char *stringToFind) const;
// Test that the string occurs for exactly expectedOccurrences times in all outputs
bool foundInCode(const char *stringToFind, const int expectedOccurrences) const;
// Test that the string is found in none of the outputs
bool notFoundInCode(const char *stringToFind) const;
private:
bool compileWithSettings(ShShaderOutput output,
const std::string &shaderString,
int compileOptions,
std::string *translatedCode,
std::string *infoLog);
GLenum mShaderType;
int mDefaultCompileOptions;
ShBuiltInResources mResources;
std::map<ShShaderOutput, std::string> mOutputCode;
};
const TIntermSymbol *FindSymbolNode(TIntermNode *root,
const TString &symbolName,
TBasicType basicType);
#endif // TESTS_TEST_UTILS_COMPILER_TEST_H_