---
title: Unnecessary effect markers (UnnecessaryEffectMarker)
framework: swift-compiler
role: article
role_heading: Article
path: swift-compiler/documentation/diagnostics/unnecessary-effect-marker
---

# Unnecessary effect markers (UnnecessaryEffectMarker)

## Overview

Overview These warnings are emitted when an effect marker — try, await, or unsafe — appears on an expression that contains no operation requiring it. The marker may have been added preemptively, the operation it was needed for may have been removed, or the resolved expression may not contain the operation that was expected to carry the effect. The UnnecessaryEffectMarker group covers: try on an expression that calls no throwing functions await on an expression that performs no async operations unsafe on an expression that contains no unsafe operations unsafe on a for-in loop whose Sequence has a safe conformance Example func greet(_ name: String) {   print("Hello, \(name)")  // not throwing, not async, not unsafe }

func caller() async throws {   try greet("Ada")    // warning: no calls to throwing functions occur within 'try' expression   await greet("Ada")  // warning: no 'async' operations occur within 'await' expression   unsafe greet("Ada") // warning: no unsafe operations occur within 'unsafe' expression } How to fix Remove the marker: func caller() async throws {   greet("Ada") }

## See Also

### Related Documentation

- [Unnecessary unsafe (UnnecessaryUnsafe)](swift-compiler/documentation/diagnostics/unnecessary-unsafe.md)

- [@dynamicCallable implementation requirements (DynamicCallable)](swift-compiler/documentation/diagnostics/dynamic-callable-requirements.md)
- [Add @preconcurrency import (AddPreconcurrencyImport)](swift-compiler/documentation/diagnostics/add-preconcurrency-import.md)
- [Always enabled availability domains (AlwaysAvailableDomain)](swift-compiler/documentation/diagnostics/always-available-domain.md)
- [Argument matching for trailing closures (TrailingClosureMatching)](swift-compiler/documentation/diagnostics/trailing-closure-matching.md)
- [Calling a mutating async actor-isolated method (ActorIsolatedMutatingAsync)](swift-compiler/documentation/diagnostics/actor-isolated-mutating-async.md)
- [Calling an actor-isolated method from a synchronous nonisolated context (ActorIsolatedCall)](swift-compiler/documentation/diagnostics/actor-isolated-call.md)
- [Captures in a `@Sendable` closure (SendableClosureCaptures)](swift-compiler/documentation/diagnostics/sendable-closure-captures.md)
- [Compilation caching (CompilationCaching)](swift-compiler/documentation/diagnostics/compilation-caching.md)
- [Conforming to `StringInterpolationProtocol` (StringInterpolationConformance)](swift-compiler/documentation/diagnostics/string-interpolation-conformance.md)
- [Conversion from `@isolated(any)` function type to synchronous function type (ConversionFromIsolatedAnyToSynchronous)](swift-compiler/documentation/diagnostics/conversion-from-isolated-any-to-synchronous.md)
- [Cross-isolation data race (RegionIsolationCrossIsolationDataRace)](swift-compiler/documentation/diagnostics/region-isolation-cross-isolation-data-race.md)
- [Deprecated declaration warnings (DeprecatedDeclaration)](swift-compiler/documentation/diagnostics/deprecated-declaration.md)
- [Deprecated implementation-only imports (ImplementationOnlyDeprecated)](swift-compiler/documentation/diagnostics/implementation-only-deprecated.md)
- [Dynamic exclusivity (DynamicExclusivity)](swift-compiler/documentation/diagnostics/dynamic-exclusivity.md)
- [Embedded Swift language restrictions (EmbeddedRestrictions)](swift-compiler/documentation/diagnostics/embedded-restrictions.md)
