if (var->data.explicit_binding) {
             const glsl_type *const type = var->type;
 
-            if (type->without_array()->is_sampler() ||
+            if (var->is_in_buffer_block()) {
+               /* This case is handled by link_uniform_blocks (at
+                * process_block_array_leaf)
+                */
+            } else if (type->without_array()->is_sampler() ||
                 type->without_array()->is_image()) {
                int binding = var->data.binding;
                linker::set_opaque_binding(mem_ctx, prog, var, var->type,
                                           var->name, &binding);
-            } else if (var->is_in_buffer_block()) {
-               /* This case is handled by link_uniform_blocks (at
-                * process_block_array_leaf)
-                */
             } else if (type->contains_atomic()) {
                /* we don't actually need to do anything. */
             } else {