142 lines
2.5 KiB
Text
142 lines
2.5 KiB
Text
import Lean.Util.Trace
|
||
|
||
set_option linter.nolint false
|
||
|
||
def explicitelyUsedVariable (x : Nat) : Nat :=
|
||
x
|
||
|
||
theorem implicitlyUsedVariable : P ∧ Q → Q := by
|
||
intro HPQ
|
||
have HQ : Q := by exact And.right HPQ
|
||
assumption
|
||
|
||
axiom axiomVariable (x : Prop) : True
|
||
|
||
def unusedVariables (x : Nat) : Nat :=
|
||
let y := 5
|
||
3
|
||
|
||
def usedAndUnusedVariable : Nat :=
|
||
let x : Nat :=
|
||
let x := 5
|
||
3
|
||
x
|
||
|
||
def unusedWhereVariable : Nat :=
|
||
3
|
||
where
|
||
x := 5
|
||
|
||
def pattern (x y : Option Nat) : Nat :=
|
||
match x with
|
||
| some z =>
|
||
match y with
|
||
| some z => 1
|
||
| none => 0
|
||
| none => 0
|
||
|
||
def implicitVariables {α : Type} [inst : ToString α] : Nat := 4
|
||
|
||
def unusedArrow : (x : Nat) → Nat := fun x => x
|
||
|
||
def mutVariable (x : Nat) : Nat := Id.run <| do
|
||
let mut y := 5
|
||
if x == 5 then
|
||
y := 3
|
||
y
|
||
|
||
def mutVariableDo (list : List Nat) : Nat := Id.run <| do
|
||
let mut sum := 0
|
||
for elem in list do
|
||
sum := sum + elem
|
||
return sum
|
||
|
||
def mutVariableDo2 (list : List Nat) : Nat := Id.run <| do
|
||
let mut sum := 0
|
||
for _ in list do
|
||
sum := sum.add 1
|
||
return sum
|
||
|
||
|
||
def unusedVariablesPattern (_x : Nat) : Nat :=
|
||
let _y := 5
|
||
3
|
||
|
||
set_option linter.unusedVariables.nolint true in
|
||
def nolint (x : Nat) : Nat :=
|
||
let y := 5
|
||
3
|
||
|
||
|
||
inductive Foo
|
||
| foo (x : Nat) (y : Nat)
|
||
|
||
structure Bar (α : Type) where
|
||
bar (x : Nat) : Nat
|
||
bar' (x : Nat) : Nat := 3
|
||
|
||
class Baz (_ : Type) where
|
||
baz (x : Nat) : Nat
|
||
baz' (x : Nat) : Nat :=
|
||
let y := 5
|
||
3
|
||
|
||
instance instBaz (α β : Type) : Baz α where
|
||
baz (x : Nat) := 5
|
||
|
||
|
||
structure State where
|
||
fieldA : Nat
|
||
fieldB : Nat
|
||
|
||
abbrev M := StateT State Id
|
||
|
||
def modifyState : M Unit := do
|
||
let s ← get
|
||
modify fun s => { s with fieldA := s.fieldA + 1 }
|
||
|
||
def modifyState' : M Unit := do
|
||
modify fun s => { s with fieldA := 1}
|
||
|
||
def modifyStateUnnecessaryWith : M Unit := do
|
||
modify fun s => { s with fieldA := 1, fieldB := 2 }
|
||
|
||
|
||
def universeParam.{u} (T : Type u) (t : T) : T := t
|
||
|
||
|
||
open Lean in
|
||
initialize tc : Unit ← registerTraceClass `Baz
|
||
|
||
register_option opt : Nat := {
|
||
defValue := 3
|
||
descr := "test option"
|
||
}
|
||
|
||
|
||
constant foo (x : Nat) : Nat
|
||
constant foo' (x : Nat) : Nat :=
|
||
let y := 5
|
||
3
|
||
variable (bar)
|
||
variable (bar' : (x : Nat) → Nat)
|
||
variable {α β} [inst : ToString α]
|
||
|
||
|
||
@[specialize]
|
||
def specialDef (x : Nat) : Nat := 3
|
||
|
||
@[implementedBy specialDef]
|
||
def implementedByDef (x : Nat) : Nat :=
|
||
let y := 3
|
||
5
|
||
|
||
@[extern "test"]
|
||
def externDef (x : Nat) : Nat :=
|
||
let y := 3
|
||
5
|
||
|
||
@[extern "test"]
|
||
constant externConst (x : Nat) : Nat :=
|
||
let y := 3
|
||
5
|