{"version":3,"file":"swift-D7nDGOwE.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/swift.js"],"sourcesContent":["function wordSet(words) {\n  var set = {}\n  for (var i = 0; i < words.length; i++) set[words[i]] = true\n  return set\n}\n\nvar keywords = wordSet([\"_\",\"var\",\"let\",\"actor\",\"class\",\"enum\",\"extension\",\"import\",\"protocol\",\"struct\",\"func\",\"typealias\",\"associatedtype\",\n                        \"open\",\"public\",\"internal\",\"fileprivate\",\"private\",\"deinit\",\"init\",\"new\",\"override\",\"self\",\"subscript\",\"super\",\n                        \"convenience\",\"dynamic\",\"final\",\"indirect\",\"lazy\",\"required\",\"static\",\"unowned\",\"unowned(safe)\",\"unowned(unsafe)\",\"weak\",\"as\",\"is\",\n                        \"break\",\"case\",\"continue\",\"default\",\"else\",\"fallthrough\",\"for\",\"guard\",\"if\",\"in\",\"repeat\",\"switch\",\"where\",\"while\",\n                        \"defer\",\"return\",\"inout\",\"mutating\",\"nonmutating\",\"isolated\",\"nonisolated\",\"catch\",\"do\",\"rethrows\",\"throw\",\"throws\",\"async\",\"await\",\"try\",\"didSet\",\"get\",\"set\",\"willSet\",\n                        \"assignment\",\"associativity\",\"infix\",\"left\",\"none\",\"operator\",\"postfix\",\"precedence\",\"precedencegroup\",\"prefix\",\"right\",\n                        \"Any\",\"AnyObject\",\"Type\",\"dynamicType\",\"Self\",\"Protocol\",\"__COLUMN__\",\"__FILE__\",\"__FUNCTION__\",\"__LINE__\"])\nvar definingKeywords = wordSet([\"var\",\"let\",\"actor\",\"class\",\"enum\",\"extension\",\"import\",\"protocol\",\"struct\",\"func\",\"typealias\",\"associatedtype\",\"for\"])\nvar atoms = wordSet([\"true\",\"false\",\"nil\",\"self\",\"super\",\"_\"])\nvar types = wordSet([\"Array\",\"Bool\",\"Character\",\"Dictionary\",\"Double\",\"Float\",\"Int\",\"Int8\",\"Int16\",\"Int32\",\"Int64\",\"Never\",\"Optional\",\"Set\",\"String\",\n                     \"UInt8\",\"UInt16\",\"UInt32\",\"UInt64\",\"Void\"])\nvar operators = \"+-/*%=|&<>~^?!\"\nvar punc = \":;,.(){}[]\"\nvar binary = /^\\-?0b[01][01_]*/\nvar octal = /^\\-?0o[0-7][0-7_]*/\nvar hexadecimal = /^\\-?0x[\\dA-Fa-f][\\dA-Fa-f_]*(?:(?:\\.[\\dA-Fa-f][\\dA-Fa-f_]*)?[Pp]\\-?\\d[\\d_]*)?/\nvar decimal = /^\\-?\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[Ee]\\-?\\d[\\d_]*)?/\nvar identifier = /^\\$\\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\\1/\nvar property = /^\\.(?:\\$\\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\\1)/\nvar instruction = /^\\#[A-Za-z]+/\nvar attribute = /^@(?:\\$\\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\\1)/\n//var regexp = /^\\/(?!\\s)(?:\\/\\/)?(?:\\\\.|[^\\/])+\\//\n\nfunction tokenBase(stream, state, prev) {\n  if (stream.sol()) state.indented = stream.indentation()\n  if (stream.eatSpace()) return null\n\n  var ch = stream.peek()\n  if (ch == \"/\") {\n    if (stream.match(\"//\")) {\n      stream.skipToEnd()\n      return \"comment\"\n    }\n    if (stream.match(\"/*\")) {\n      state.tokenize.push(tokenComment)\n      return tokenComment(stream, state)\n    }\n  }\n  if (stream.match(instruction)) return \"builtin\"\n  if (stream.match(attribute)) return \"attribute\"\n  if (stream.match(binary)) return \"number\"\n  if (stream.match(octal)) return \"number\"\n  if (stream.match(hexadecimal)) return \"number\"\n  if (stream.match(decimal)) return \"number\"\n  if (stream.match(property)) return \"property\"\n  if (operators.indexOf(ch) > -1) {\n    stream.next()\n    return \"operator\"\n  }\n  if (punc.indexOf(ch) > -1) {\n    stream.next()\n    stream.match(\"..\")\n    return \"punctuation\"\n  }\n  var stringMatch\n  if (stringMatch = stream.match(/(\"\"\"|\"|')/)) {\n    var tokenize = tokenString.bind(null, stringMatch[0])\n    state.tokenize.push(tokenize)\n    return tokenize(stream, state)\n  }\n\n  if (stream.match(identifier)) {\n    var ident = stream.current()\n    if (types.hasOwnProperty(ident)) return \"type\"\n    if (atoms.hasOwnProperty(ident)) return \"atom\"\n    if (keywords.hasOwnProperty(ident)) {\n      if (definingKeywords.hasOwnProperty(ident))\n        state.prev = \"define\"\n      return \"keyword\"\n    }\n    if (prev == \"define\") return \"def\"\n    return \"variable\"\n  }\n\n  stream.next()\n  return null\n}\n\nfunction tokenUntilClosingParen() {\n  var depth = 0\n  return function(stream, state, prev) {\n    var inner = tokenBase(stream, state, prev)\n    if (inner == \"punctuation\") {\n      if (stream.current() == \"(\") ++depth\n      else if (stream.current() == \")\") {\n        if (depth == 0) {\n          stream.backUp(1)\n          state.tokenize.pop()\n          return state.tokenize[state.tokenize.length - 1](stream, state)\n        }\n        else --depth\n      }\n    }\n    return inner\n  }\n}\n\nfunction tokenString(openQuote, stream, state) {\n  var singleLine = openQuote.length == 1\n  var ch, escaped = false\n  while (ch = stream.peek()) {\n    if (escaped) {\n      stream.next()\n      if (ch == \"(\") {\n        state.tokenize.push(tokenUntilClosingParen())\n        return \"string\"\n      }\n      escaped = false\n    } else if (stream.match(openQuote)) {\n      state.tokenize.pop()\n      return \"string\"\n    } else {\n      stream.next()\n      escaped = ch == \"\\\\\"\n    }\n  }\n  if (singleLine) {\n    state.tokenize.pop()\n  }\n  return \"string\"\n}\n\nfunction tokenComment(stream, state) {\n  var ch\n  while (ch = stream.next()) {\n    if (ch === \"/\" && stream.eat(\"*\")) {\n      state.tokenize.push(tokenComment)\n    } else if (ch === \"*\" && stream.eat(\"/\")) {\n      state.tokenize.pop()\n      break\n    }\n  }\n  return \"comment\"\n}\n\nfunction Context(prev, align, indented) {\n  this.prev = prev\n  this.align = align\n  this.indented = indented\n}\n\nfunction pushContext(state, stream) {\n  var align = stream.match(/^\\s*($|\\/[\\/\\*]|[)}\\]])/, false) ? null : stream.column() + 1\n  state.context = new Context(state.context, align, state.indented)\n}\n\nfunction popContext(state) {\n  if (state.context) {\n    state.indented = state.context.indented\n    state.context = state.context.prev\n  }\n}\n\nexport const swift = {\n  name: \"swift\",\n  startState: function() {\n    return {\n      prev: null,\n      context: null,\n      indented: 0,\n      tokenize: []\n    }\n  },\n\n  token: function(stream, state) {\n    var prev = state.prev\n    state.prev = null\n    var tokenize = state.tokenize[state.tokenize.length - 1] || tokenBase\n    var style = tokenize(stream, state, prev)\n    if (!style || style == \"comment\") state.prev = prev\n    else if (!state.prev) state.prev = style\n\n    if (style == \"punctuation\") {\n      var bracket = /[\\(\\[\\{]|([\\]\\)\\}])/.exec(stream.current())\n      if (bracket) (bracket[1] ? popContext : pushContext)(state, stream)\n    }\n\n    return style\n  },\n\n  indent: function(state, textAfter, iCx) {\n    var cx = state.context\n    if (!cx) return 0\n    var closing = /^[\\]\\}\\)]/.test(textAfter)\n    if (cx.align != null) return cx.align - (closing ? 1 : 0)\n    return cx.indented + (closing ? 0 : iCx.unit)\n  },\n\n  languageData: {\n    indentOnInput: /^\\s*[\\)\\}\\]]$/,\n    commentTokens: {line: \"//\", block: {open: \"/*\", close: \"*/\"}},\n    closeBrackets: {brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"`\"]}\n  }\n}\n"],"names":["wordSet","words","set","i","length","keywords","definingKeywords","atoms","types","binary","octal","hexadecimal","decimal","identifier","property","instruction","attribute","tokenBase","stream","state","prev","sol","indented","indentation","eatSpace","stringMatch","ch","peek","match","skipToEnd","tokenize","push","tokenComment","indexOf","next","tokenString","bind","ident","current","hasOwnProperty","tokenUntilClosingParen","depth","inner","backUp","pop","openQuote","singleLine","escaped","eat","Context","align","this","pushContext","column","context","popContext","swift","name","startState","token","style","bracket","exec","indent","textAfter","iCx","cx","closing","test","unit","languageData","indentOnInput","commentTokens","line","block","open","close","closeBrackets","brackets"],"mappings":"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","x_google_ignoreList":[0]}