Diff
Modified: trunk/Source/WebCore/ChangeLog (240226 => 240227)
--- trunk/Source/WebCore/ChangeLog 2019-01-21 05:09:34 UTC (rev 240226)
+++ trunk/Source/WebCore/ChangeLog 2019-01-21 05:40:20 UTC (rev 240227)
@@ -1,3 +1,25 @@
+2019-01-20 Myles C. Maxfield <mmaxfi...@apple.com>
+
+ [WHLSL] Add the statement behavior checker
+ https://bugs.webkit.org/show_bug.cgi?id=193487
+
+ Reviewed by Dean Jackson.
+
+ This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Spec/source/index.rst#typing-statements
+ into C++. It is meant to replace the ReturnChecker and UnreachableCodeChecker in the reference implementation.
+
+ No new tests because it isn't hooked up yet. Not enough of the compiler exists to have any meaningful sort
+ of test. When enough of the compiler is present, I'll port the reference implementation's test suite.
+
+ * Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp: Removed. StatementBehaviorChecker does everything that LoopChecker
+ does.
+ * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp: Added.
+ (WebCore::WHLSL::StatementBehaviorChecker::takeFunctionBehavior):
+ (WebCore::WHLSL::checkStatementBehavior):
+ * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h: Renamed from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
+ * Sources.txt:
+ * WebCore.xcodeproj/project.pbxproj:
+
2019-01-20 Michael Catanzaro <mcatanz...@igalia.com>
REGRESSION(r240174): Wrong preprocessor guards in RenderImage::paintAreaElementFocusRing
Deleted: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp (240226 => 240227)
--- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp 2019-01-21 05:09:34 UTC (rev 240226)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp 2019-01-21 05:40:20 UTC (rev 240227)
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2019 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "WHLSLLoopChecker.h"
-
-#if ENABLE(WEBGPU)
-
-#include "WHLSLBreak.h"
-#include "WHLSLContinue.h"
-#include "WHLSLDoWhileLoop.h"
-#include "WHLSLFallthrough.h"
-#include "WHLSLForLoop.h"
-#include "WHLSLSwitchStatement.h"
-#include "WHLSLVisitor.h"
-#include "WHLSLWhileLoop.h"
-#include <wtf/SetForScope.h>
-
-namespace WebCore {
-
-namespace WHLSL {
-
-// This makes sure that every occurance of "continue," "break," and "fallthrough" appear within the relevant control flow structure.
-class LoopChecker : public Visitor {
-public:
- LoopChecker() = default;
-
- virtual ~LoopChecker() = default;
-
-private:
- void visit(AST::FunctionDefinition& functionDefinition) override
- {
- ASSERT(!m_loopDepth);
- ASSERT(!m_switchDepth);
- Visitor::visit(functionDefinition);
- }
-
- void visit(AST::WhileLoop& whileLoop) override
- {
- checkErrorAndVisit(whileLoop.conditional());
-
- SetForScope<unsigned> change(m_loopDepth, m_loopDepth + 1);
- checkErrorAndVisit(whileLoop.body());
- ASSERT(m_loopDepth);
- }
-
- void visit(AST::DoWhileLoop& doWhileLoop) override
- {
- {
- SetForScope<unsigned> change(m_loopDepth, m_loopDepth + 1);
- checkErrorAndVisit(doWhileLoop.body());
- ASSERT(m_loopDepth);
- }
-
- checkErrorAndVisit(doWhileLoop.conditional());
- }
-
- void visit(AST::ForLoop& forLoop) override
- {
- WTF::visit(WTF::makeVisitor([&](AST::VariableDeclarationsStatement& variableDeclarationsStatement) {
- checkErrorAndVisit(variableDeclarationsStatement);
- }, [&](UniqueRef<AST::_expression_>& _expression_) {
- checkErrorAndVisit(_expression_);
- }), forLoop.initialization());
- if (forLoop.condition())
- checkErrorAndVisit(*forLoop.condition());
- if (forLoop.increment())
- checkErrorAndVisit(*forLoop.increment());
-
- SetForScope<unsigned> change(m_loopDepth, m_loopDepth + 1);
- checkErrorAndVisit(forLoop.body());
- ASSERT(m_loopDepth);
- }
-
- void visit(AST::SwitchStatement& switchStatement) override
- {
- checkErrorAndVisit(switchStatement.value());
-
- SetForScope<unsigned> change(m_switchDepth, m_switchDepth + 1);
- for (auto& switchCase : switchStatement.switchCases())
- checkErrorAndVisit(switchCase);
- ASSERT(m_switchDepth);
- }
-
- void visit(AST::Break& breakStatement) override
- {
- if (!m_loopDepth && !m_switchDepth) {
- setError();
- return;
- }
- Visitor::visit(breakStatement);
- }
-
- void visit(AST::Continue& continueStatement) override
- {
- if (!m_loopDepth) {
- setError();
- return;
- }
- Visitor::visit(continueStatement);
- }
-
- void visit(AST::Fallthrough& fallthroughStatement) override
- {
- if (!m_switchDepth) {
- setError();
- return;
- }
- Visitor::visit(fallthroughStatement);
- }
-
- unsigned m_loopDepth { 0 };
- unsigned m_switchDepth { 0 };
-};
-
-bool checkLoops(Program& program)
-{
- LoopChecker loopChecker;
- loopChecker.Visitor::visit(program);
- return !loopChecker.error();
-}
-
-} // namespace WHLSL
-
-} // namespace WebCore
-
-#endif // ENABLE(WEBGPU)
Deleted: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h (240226 => 240227)
--- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h 2019-01-21 05:09:34 UTC (rev 240226)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h 2019-01-21 05:40:20 UTC (rev 240227)
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2019 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(WEBGPU)
-
-namespace WebCore {
-
-namespace WHLSL {
-
-class Program;
-
-bool checkLoops(Program&);
-
-}
-
-}
-
-#endif
Added: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp (0 => 240227)
--- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp (rev 0)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp 2019-01-21 05:40:20 UTC (rev 240227)
@@ -0,0 +1,243 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "WHLSLStatementBehaviorChecker.h"
+
+#if ENABLE(WEBGPU)
+
+#include "WHLSLDoWhileLoop.h"
+#include "WHLSLForLoop.h"
+#include "WHLSLIfStatement.h"
+#include "WHLSLInferTypes.h"
+#include "WHLSLProgram.h"
+#include "WHLSLSwitchStatement.h"
+#include "WHLSLWhileLoop.h"
+#include <cstdint>
+#include <wtf/OptionSet.h>
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+namespace WHLSL {
+
+class StatementBehaviorChecker : public Visitor {
+public:
+ enum class Behavior : uint8_t {
+ Return = 1 << 0,
+ Break = 1 << 1,
+ Continue = 1 << 2,
+ Fallthrough = 1 << 3,
+ Nothing = 1 << 4
+ };
+
+ OptionSet<Behavior> takeFunctionBehavior()
+ {
+ ASSERT(m_stack.size() == 1);
+ return m_stack.takeLast();
+ }
+
+private:
+ void visit(AST::Break&) override
+ {
+ m_stack.append({ Behavior::Break });
+ }
+
+ void visit(AST::Fallthrough&) override
+ {
+ m_stack.append({ Behavior::Fallthrough });
+ }
+
+ void visit(AST::Continue&) override
+ {
+ m_stack.append({ Behavior::Continue });
+ }
+
+ void visit(AST::Return&) override
+ {
+ m_stack.append({ Behavior::Return });
+ }
+
+ void visit(AST::Trap&) override
+ {
+ m_stack.append({ Behavior::Return });
+ }
+
+ void visit(AST::DoWhileLoop& doWhileLoop) override
+ {
+ checkErrorAndVisit(doWhileLoop.body());
+ if (error())
+ return;
+ auto b = m_stack.takeLast();
+ b.remove(Behavior::Break);
+ b.remove(Behavior::Continue);
+ b.add(Behavior::Nothing);
+ m_stack.append(b);
+ }
+
+ void visit(AST::ForLoop& forLoop) override
+ {
+ // The initialization always has a behavior of Nothing, which we already add unconditionally below,
+ // so we can just ignore the initialization.
+
+ checkErrorAndVisit(forLoop.body());
+ if (error())
+ return;
+ auto b = m_stack.takeLast();
+ b.remove(Behavior::Break);
+ b.remove(Behavior::Continue);
+ b.add(Behavior::Nothing);
+ m_stack.append(b);
+ }
+
+ void visit(AST::WhileLoop& whileLoop) override
+ {
+ checkErrorAndVisit(whileLoop.body());
+ if (error())
+ return;
+ auto b = m_stack.takeLast();
+ b.remove(Behavior::Break);
+ b.remove(Behavior::Continue);
+ b.add(Behavior::Nothing);
+ m_stack.append(b);
+ }
+
+ void visit(AST::SwitchCase& switchCase) override
+ {
+ Visitor::visit(switchCase);
+ }
+
+ void visit(AST::SwitchStatement& switchStatement) override
+ {
+ if (switchStatement.switchCases().isEmpty()) {
+ m_stack.append({ Behavior::Nothing });
+ return;
+ }
+
+ OptionSet<Behavior> reduction = { };
+ for (auto& switchCase : switchStatement.switchCases()) {
+ checkErrorAndVisit(switchCase);
+ if (error())
+ return;
+ auto b = m_stack.takeLast();
+ reduction = reduction | b;
+ }
+ if (reduction.contains(Behavior::Nothing)) {
+ setError();
+ return;
+ }
+ reduction.remove(Behavior::Break);
+ reduction.remove(Behavior::Fallthrough);
+ reduction.add(Behavior::Nothing);
+ m_stack.append(reduction);
+ }
+
+ void visit(AST::IfStatement& ifStatement) override
+ {
+ checkErrorAndVisit(ifStatement.body());
+ if (error())
+ return;
+ auto b = m_stack.takeLast();
+ OptionSet<Behavior> bPrime;
+ if (ifStatement.elseBody()) {
+ checkErrorAndVisit(*ifStatement.elseBody());
+ if (error())
+ return;
+ bPrime = m_stack.takeLast();
+ } else
+ bPrime = { Behavior::Nothing };
+ m_stack.append(b | bPrime);
+ }
+
+ void visit(AST::EffectfulExpressionStatement&) override
+ {
+ m_stack.append({ Behavior::Nothing });
+ }
+
+ void visit(AST::Block& block) override
+ {
+ if (block.statements().isEmpty()) {
+ m_stack.append({ Behavior::Nothing });
+ return;
+ }
+
+ OptionSet<Behavior> reduction = { };
+ for (size_t i = 0; i < block.statements().size() - 1; ++i) {
+ checkErrorAndVisit(block.statements()[i]);
+ if (error())
+ return;
+ auto b = m_stack.takeLast();
+ if (!b.contains(Behavior::Nothing)) {
+ setError();
+ return;
+ }
+ b.remove(Behavior::Nothing);
+ if (b.contains(Behavior::Fallthrough)) {
+ setError();
+ return;
+ }
+ reduction = reduction | b;
+ }
+ checkErrorAndVisit(block.statements()[block.statements().size() - 1]);
+ if (error())
+ return;
+ auto b = m_stack.takeLast();
+ m_stack.append(reduction | b);
+ }
+
+ void visit(AST::VariableDeclarationsStatement&) override
+ {
+ m_stack.append({ Behavior::Nothing });
+ }
+
+ Vector<OptionSet<Behavior>> m_stack;
+};
+
+bool checkStatementBehavior(Program& program)
+{
+ StatementBehaviorChecker statementBehaviorChecker;
+ for (auto& functionDefinition : program.functionDefinitions()) {
+ statementBehaviorChecker.Visitor::visit(functionDefinition);
+ if (statementBehaviorChecker.error())
+ return false;
+ auto behavior = statementBehaviorChecker.takeFunctionBehavior();
+ if (matches(functionDefinition->type(), program.intrinsics().voidType())) {
+ behavior.remove(StatementBehaviorChecker::Behavior::Return);
+ behavior.remove(StatementBehaviorChecker::Behavior::Nothing);
+ if (behavior != OptionSet<StatementBehaviorChecker::Behavior>())
+ return false;
+ } else {
+ if (behavior != StatementBehaviorChecker::Behavior::Return)
+ return false;
+ }
+ }
+ return true;
+}
+
+} // namespace WHLSL
+
+} // namespace WebCore
+
+#endif // ENABLE(WEBGPU)
Property changes on: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp
___________________________________________________________________
Added: svn:eol-style
+native
\ No newline at end of property
Copied: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h (from rev 240226, trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h) (0 => 240227)
--- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h (rev 0)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h 2019-01-21 05:40:20 UTC (rev 240227)
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+namespace WebCore {
+
+namespace WHLSL {
+
+class Program;
+
+bool checkStatementBehavior(Program&);
+
+}
+
+}
+
+#endif
Property changes: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h
Added: svn:eol-style
+native
\ No newline at end of property
Added: svn:keywords
+Author Date Id Rev URL
\ No newline at end of property
Modified: trunk/Source/WebCore/Sources.txt (240226 => 240227)
--- trunk/Source/WebCore/Sources.txt 2019-01-21 05:09:34 UTC (rev 240226)
+++ trunk/Source/WebCore/Sources.txt 2019-01-21 05:40:20 UTC (rev 240227)
@@ -318,6 +318,7 @@
Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp
Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp
Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp
+Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp
Modules/webgpu/WHLSL/WHLSLNameContext.cpp
Modules/webgpu/WHLSL/WHLSLNameResolver.cpp
Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp
@@ -325,7 +326,6 @@
Modules/webgpu/WHLSL/WHLSLVisitor.cpp
Modules/webgpu/WHLSL/WHLSLLiteralTypeChecker.cpp
Modules/webgpu/WHLSL/WHLSLHighZombieFinder.cpp
-Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp
Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.cpp
Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.cpp
Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.cpp
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (240226 => 240227)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-01-21 05:09:34 UTC (rev 240226)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-01-21 05:40:20 UTC (rev 240227)
@@ -6437,8 +6437,6 @@
1CA0C2E521EED12A00A11860 /* WHLSLFunctionStageChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLFunctionStageChecker.h; sourceTree = "<group>"; };
1CA0C2EA21EED6F500A11860 /* WHLSLLiteralTypeChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLLiteralTypeChecker.h; sourceTree = "<group>"; };
1CA0C2EC21EED6F600A11860 /* WHLSLLiteralTypeChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLLiteralTypeChecker.cpp; sourceTree = "<group>"; };
- 1CA0C2F421EEDAD000A11860 /* WHLSLLoopChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLLoopChecker.cpp; sourceTree = "<group>"; };
- 1CA0C2F521EEDAD100A11860 /* WHLSLLoopChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLLoopChecker.h; sourceTree = "<group>"; };
1CA19E030DC255950065A994 /* EventLoopMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EventLoopMac.mm; sourceTree = "<group>"; };
1CA19E150DC255CA0065A994 /* EventLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventLoop.h; sourceTree = "<group>"; };
1CAF347E0A6C405200ABE06E /* WebScriptObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebScriptObject.h; sourceTree = "<group>"; };
@@ -6460,6 +6458,8 @@
1CDD45E40BA9C84600F90147 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = "<group>"; };
1CDD45E50BA9C84600F90147 /* WebCore.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebCore.xcconfig; sourceTree = "<group>"; };
1CDD45E60BA9C84600F90147 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
+ 1CECB3A821F2B67300F44542 /* WHLSLStatementBehaviorChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLStatementBehaviorChecker.h; sourceTree = "<group>"; };
+ 1CECB3A921F2B67300F44542 /* WHLSLStatementBehaviorChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLStatementBehaviorChecker.cpp; sourceTree = "<group>"; };
1CFAE3220A6D6A3F0032593D /* libobjc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libobjc.dylib; path = /usr/lib/libobjc.dylib; sourceTree = "<absolute>"; };
1DC553FD211BA12A004B780E /* NavigatorShare.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NavigatorShare.idl; sourceTree = "<group>"; };
1DC553FF211BA841004B780E /* ShareData.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ShareData.idl; sourceTree = "<group>"; };
@@ -25580,8 +25580,6 @@
C210E91221B4BD1000B7F83D /* WHLSLLexer.h */,
1CA0C2EC21EED6F600A11860 /* WHLSLLiteralTypeChecker.cpp */,
1CA0C2EA21EED6F500A11860 /* WHLSLLiteralTypeChecker.h */,
- 1CA0C2F421EEDAD000A11860 /* WHLSLLoopChecker.cpp */,
- 1CA0C2F521EEDAD100A11860 /* WHLSLLoopChecker.h */,
C234A98D21E88884003C984D /* WHLSLNameContext.cpp */,
C234A98E21E88885003C984D /* WHLSLNameContext.h */,
C234A98A21E8883E003C984D /* WHLSLNameResolver.cpp */,
@@ -25597,6 +25595,8 @@
C234A99721E90F28003C984D /* WHLSLResolveOverloadImpl.h */,
C234A99D21E910BD003C984D /* WHLSLResolvingType.h */,
C21BF74521CD969800227979 /* WHLSLStandardLibrary.txt */,
+ 1CECB3A921F2B67300F44542 /* WHLSLStatementBehaviorChecker.cpp */,
+ 1CECB3A821F2B67300F44542 /* WHLSLStatementBehaviorChecker.h */,
C234A9A921E92C17003C984D /* WHLSLSynthesizeArrayOperatorLength.cpp */,
C234A9AF21E92C1B003C984D /* WHLSLSynthesizeArrayOperatorLength.h */,
C234A9B021E92C1C003C984D /* WHLSLSynthesizeConstructors.cpp */,