Compiler projects using llvm
;---------------------------------------------------------------------
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN:               -check-prefix=EndAfterEnd
; RUN: FileCheck -input-file %s %s -check-prefix=EndAfterEnd

new match end after old match end

__EndAfterEnd
(abc<mno>xyz)
(abc<mno>xyz)
(abc<mno>xyz  >xyz)
(abc<mno>xyz  no>xyz)
(abc<mno>xyz  <mno>xyz)
(abc<mno>xyz  c<mno>xyz)
(abc<mno>xyz  abc<mno>xyz)
__EndAfterEnd

; EndAfterEnd:      __EndAfterEnd

; EndAfterEnd:      {{^}}(
; EndAfterEnd-DAG:  <mno>
; EndAfterEnd-DAG:  yz
; EndAfterEnd-NOT:  {{.}}
; EndAfterEnd-SAME: ){{$}}

; EndAfterEnd:      {{^}}(
; EndAfterEnd-DAG:  <mno>
; EndAfterEnd-DAG:  xyz
; EndAfterEnd-NOT:  {{.}}
; EndAfterEnd-SAME: ){{$}}

; EndAfterEnd:      {{^}}(
; EndAfterEnd-DAG:  <mno>
; EndAfterEnd-DAG:  >xyz
; EndAfterEnd-NOT:  {{.}}
; EndAfterEnd-SAME: ){{$}}

; EndAfterEnd:      {{^}}(
; EndAfterEnd-DAG:  <mno>
; EndAfterEnd-DAG:  no>xyz
; EndAfterEnd-NOT:  {{.}}
; EndAfterEnd-SAME: ){{$}}

; EndAfterEnd:      {{^}}(
; EndAfterEnd-DAG:  <mno>
; EndAfterEnd-DAG:  <mno>xyz
; EndAfterEnd-NOT:  {{.}}
; EndAfterEnd-SAME: ){{$}}

; EndAfterEnd:      {{^}}(
; EndAfterEnd-DAG:  <mno>
; EndAfterEnd-DAG:  c<mno>xyz
; EndAfterEnd-NOT:  {{.}}
; EndAfterEnd-SAME: ){{$}}

; EndAfterEnd:      {{^}}(
; EndAfterEnd-DAG:  <mno>
; EndAfterEnd-DAG:  abc<mno>xyz
; EndAfterEnd-NOT:  {{.}}
; EndAfterEnd-SAME: ){{$}}

; EndAfterEnd:      __EndAfterEnd

;---------------------------------------------------------------------
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN:               -check-prefix=EndRightAfterEnd
; RUN: FileCheck -input-file %s %s -check-prefix=EndRightAfterEnd

new match end right after old match end

__EndRightAfterEnd
(abc<mno>xyz)
(abc<mno>xyz  >x)
(abc<mno>xyz  no>x)
(abc<mno>xyz  <mno>x)
(abc<mno>xyz  c<mno>x)
(abc<mno>xyz  abc<mno>x)
__EndRightAfterEnd

; EndRightAfterEnd:      __EndRightAfterEnd

; EndRightAfterEnd:      {{^}}(
; EndRightAfterEnd-DAG:  <mno>
; EndRightAfterEnd-DAG:  x
; EndRightAfterEnd-NOT:  {{.}}
; EndRightAfterEnd-SAME: yz){{$}}

; EndRightAfterEnd:      {{^}}(
; EndRightAfterEnd-DAG:  <mno>
; EndRightAfterEnd-DAG:  >x
; EndRightAfterEnd-NOT:  {{.}}
; EndRightAfterEnd-SAME: ){{$}}

; EndRightAfterEnd:      {{^}}(
; EndRightAfterEnd-DAG:  <mno>
; EndRightAfterEnd-DAG:  no>x
; EndRightAfterEnd-NOT:  {{.}}
; EndRightAfterEnd-SAME: ){{$}}

; EndRightAfterEnd:      {{^}}(
; EndRightAfterEnd-DAG:  <mno>
; EndRightAfterEnd-DAG:  <mno>x
; EndRightAfterEnd-NOT:  {{.}}
; EndRightAfterEnd-SAME: ){{$}}

; EndRightAfterEnd:      {{^}}(
; EndRightAfterEnd-DAG:  <mno>
; EndRightAfterEnd-DAG:  c<mno>x
; EndRightAfterEnd-NOT:  {{.}}
; EndRightAfterEnd-SAME: ){{$}}

; EndRightAfterEnd:      {{^}}(
; EndRightAfterEnd-DAG:  <mno>
; EndRightAfterEnd-DAG:  abc<mno>x
; EndRightAfterEnd-NOT:  {{.}}
; EndRightAfterEnd-SAME: ){{$}}

; EndRightAfterEnd:      __EndRightAfterEnd

;---------------------------------------------------------------------
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN:               -check-prefix=EndAtEnd
; RUN: FileCheck -input-file %s %s -check-prefix=EndAtEnd

new match end at old match end

__EndAtEnd
(abc<mno>xyz  >)
(abc<mno>xyz  no>)
(abc<mno>xyz  <mno>)
(abc<mno>xyz  c<mno>)
(abc<mno>xyz  abc<mno>)
__EndAtEnd

; EndAtEnd:      __EndAtEnd

; EndAtEnd:      {{^}}(
; EndAtEnd-DAG:  <mno>
; EndAtEnd-DAG:  >
; EndAtEnd-NOT:  {{.}}
; EndAtEnd-SAME: ){{$}}

; EndAtEnd:      {{^}}(
; EndAtEnd-DAG:  <mno>
; EndAtEnd-DAG:  no>
; EndAtEnd-NOT:  {{.}}
; EndAtEnd-SAME: ){{$}}

; EndAtEnd:      {{^}}(
; EndAtEnd-DAG:  <mno>
; EndAtEnd-DAG:  <mno>
; EndAtEnd-NOT:  {{.}}
; EndAtEnd-SAME: ){{$}}

; EndAtEnd:      {{^}}(
; EndAtEnd-DAG:  <mno>
; EndAtEnd-DAG:  c<mno>
; EndAtEnd-NOT:  {{.}}
; EndAtEnd-SAME: ){{$}}

; EndAtEnd:      {{^}}(
; EndAtEnd-DAG:  <mno>
; EndAtEnd-DAG:  abc<mno>
; EndAtEnd-NOT:  {{.}}
; EndAtEnd-SAME: ){{$}}

; EndAtEnd:      __EndAtEnd

;---------------------------------------------------------------------
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN:               -check-prefix=EndWithin
; RUN: FileCheck -input-file %s %s -check-prefix=EndWithin

new match end within old match

__EndWithin
(abc<mno>xyz  m)
(abc<mno>xyz  <m)
(abc<mno>xyz  c<m)
(abc<mno>xyz  abc<m)
__EndWithin

; EndWithin:      __EndWithin

; EndWithin:      {{^}}(
; EndWithin-DAG:  <mno>
; EndWithin-DAG:  m
; EndWithin-NOT:  {{.}}
; EndWithin-SAME: ){{$}}

; EndWithin:      {{^}}(
; EndWithin-DAG:  <mno>
; EndWithin-DAG:  <m
; EndWithin-NOT:  {{.}}
; EndWithin-SAME: ){{$}}

; EndWithin:      {{^}}(
; EndWithin-DAG:  <mno>
; EndWithin-DAG:  c<m
; EndWithin-NOT:  {{.}}
; EndWithin-SAME: ){{$}}

; EndWithin:      {{^}}(
; EndWithin-DAG:  <mno>
; EndWithin-DAG:  abc<m
; EndWithin-NOT:  {{.}}
; EndWithin-SAME: ){{$}}

; EndWithin:      __EndWithin

;---------------------------------------------------------------------
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN:               -check-prefix=EndRightAfterStart
; RUN: FileCheck -input-file %s %s -check-prefix=EndRightAfterStart

new match end right after old match start

__EndRightAfterStart
(abc<mno>xyz  <)
(abc<mno>xyz  c<)
(abc<mno>xyz  abc<)
__EndRightAfterStart

; EndRightAfterStart:      __EndRightAfterStart

; EndRightAfterStart:      {{^}}(
; EndRightAfterStart-DAG:  <mno>
; EndRightAfterStart-DAG:  <
; EndRightAfterStart-NOT:  {{.}}
; EndRightAfterStart-SAME: ){{$}}

; EndRightAfterStart:      {{^}}(
; EndRightAfterStart-DAG:  <mno>
; EndRightAfterStart-DAG:  c<
; EndRightAfterStart-NOT:  {{.}}
; EndRightAfterStart-SAME: ){{$}}

; EndRightAfterStart:      {{^}}(
; EndRightAfterStart-DAG:  <mno>
; EndRightAfterStart-DAG:  abc<
; EndRightAfterStart-NOT:  {{.}}
; EndRightAfterStart-SAME: ){{$}}

; EndRightAfterStart:      __EndRightAfterStart

;---------------------------------------------------------------------
; RUN: FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN:           -check-prefix=EndAtStart
; RUN: FileCheck -input-file %s %s -check-prefix=EndAtStart

new match end at old match start

__EndAtStart
(abc<mno>xyz)
(abc<mno>xyz)
__EndAtStart

; EndAtStart:      __EndAtStart

; EndAtStart:      {{^}}(
; EndAtStart-DAG:  <mno>
; EndAtStart-DAG:  c
; EndAtStart-DAG:  xyz
; EndAtStart-NOT:  {{.}}
; EndAtStart-SAME: ){{$}}

; EndAtStart:      {{^}}(
; EndAtStart-DAG:  <mno>
; EndAtStart-DAG:  abc
; EndAtStart-DAG:  xyz
; EndAtStart-NOT:  {{.}}
; EndAtStart-SAME: ){{$}}

; EndAtStart:      __EndAtStart

;---------------------------------------------------------------------
; RUN: FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN:           -check-prefix=EndBeforeStart
; RUN: FileCheck -input-file %s %s -check-prefix=EndBeforeStart

new match end before old match start

__EndBeforeStart
(abc<mno>xyz)
(abc<mno>xyz)
__EndBeforeStart

; EndBeforeStart:      __EndBeforeStart

; EndBeforeStart:      {{^}}(
; EndBeforeStart-DAG:  <mno>
; EndBeforeStart-DAG:  b
; EndBeforeStart-DAG:  xyz
; EndBeforeStart-NOT:  {{.}}
; EndBeforeStart-SAME: ){{$}}

; EndBeforeStart:      {{^}}(
; EndBeforeStart-DAG:  <mno>
; EndBeforeStart-DAG:  ab
; EndBeforeStart-DAG:  xyz
; EndBeforeStart-NOT:  {{.}}
; EndBeforeStart-SAME: ){{$}}

; EndBeforeStart:      __EndBeforeStart