diff --git a/src/dawn_native/opengl/PipelineGL.cpp b/src/dawn_native/opengl/PipelineGL.cpp
index f7adf95..57d7264 100644
--- a/src/dawn_native/opengl/PipelineGL.cpp
+++ b/src/dawn_native/opengl/PipelineGL.cpp
@@ -28,13 +28,13 @@
 
     namespace {
 
-        GLenum GLShaderType(ShaderStage stage) {
+        GLenum GLShaderType(SingleShaderStage stage) {
             switch (stage) {
-                case ShaderStage::Vertex:
+                case SingleShaderStage::Vertex:
                     return GL_VERTEX_SHADER;
-                case ShaderStage::Fragment:
+                case SingleShaderStage::Fragment:
                     return GL_FRAGMENT_SHADER;
-                case ShaderStage::Compute:
+                case SingleShaderStage::Compute:
                     return GL_COMPUTE_SHADER;
                 default:
                     UNREACHABLE();
@@ -74,14 +74,14 @@
 
         mProgram = gl.CreateProgram();
 
-        dawn::ShaderStageBit activeStages = dawn::ShaderStageBit::None;
-        for (ShaderStage stage : IterateStages(kAllStages)) {
+        dawn::ShaderStage activeStages = dawn::ShaderStage::None;
+        for (SingleShaderStage stage : IterateStages(kAllStages)) {
             if (modules[stage] != nullptr) {
                 activeStages |= StageBit(stage);
             }
         }
 
-        for (ShaderStage stage : IterateStages(activeStages)) {
+        for (SingleShaderStage stage : IterateStages(activeStages)) {
             GLuint shader = CreateShader(gl, GLShaderType(stage), modules[stage]->GetSource());
             gl.AttachShader(mProgram, shader);
         }
@@ -153,7 +153,7 @@
         // Compute links between stages for combined samplers, then bind them to texture units
         {
             std::set<CombinedSampler> combinedSamplersSet;
-            for (ShaderStage stage : IterateStages(activeStages)) {
+            for (SingleShaderStage stage : IterateStages(activeStages)) {
                 for (const auto& combined : modules[stage]->GetCombinedSamplerInfo()) {
                     combinedSamplersSet.insert(combined);
                 }
