Compiler projects using llvm
" Vim syntax file
" Language:   mir
" Maintainer: The LLVM team, http://llvm.org/
" Version:      $Revision$

if version < 600
  syntax clear
elseif exists("b:current_syntax")
  finish
endif

syn case match

" MIR is embedded in a yaml container, so we load all of the yaml syntax.
runtime! syntax/yaml.vim
unlet b:current_syntax

" The first document of a file is allowed to contain an LLVM IR module inside
" a top-level yaml block string.
syntax include @LLVM syntax/llvm.vim
" FIXME: This should only be allowed for the first document of the file
syntax region llvm start=/\(^---\s*|\)\@<=/ end=/\(^\.\.\.\)\@=/ contains=@LLVM

" The `body:` field of a document contains the MIR dump of the function
syntax include @MIR syntax/machine-ir.vim
syntax region mir start=/\(^body:\s*|\)\@<=/ end=/\(^[^[:space:]]\)\@=/ contains=@MIR

" Syntax-highlight lit test commands and bug numbers.
syn match  mirSpecialComment /#\s*PR\d*\s*$/
syn match  mirSpecialComment /#\s*REQUIRES:.*$/
syn match  mirSpecialComment /#\s*RUN:.*$/
syn match  mirSpecialComment /#\s*ALLOW_RETRIES:.*$/
syn match  mirSpecialComment /#\s*CHECK:.*$/
syn match  mirSpecialComment "\v#\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$"
syn match  mirSpecialComment /#\s*XFAIL:.*$/

if version >= 508 || !exists("did_c_syn_inits")
  if version < 508
    let did_c_syn_inits = 1
    command -nargs=+ HiLink hi link <args>
  else
    command -nargs=+ HiLink hi def link <args>
  endif

  HiLink mirSpecialComment SpecialComment
endif

let b:current_syntax = "mir"