// Copyright (c) 2019-2020 Alexander Medvednikov. All rights reserved.
// Use of this source code is governed by an MIT license
// that can be found in the LICENSE file.
module compiler

fn (p mut Parser) inline_asm() {
	if !p.inside_unsafe {
		p.error('asm() needs to be run inside `unsafe {}`')
	}
	p.next()
	p.check(.lcbr)
	s := p.check_string()
	p.genln('asm("$s"')
	for p.tok == .str {
		p.genln('"$p.lit"')
		p.next()
	}
	for p.tok == .colon {
		p.next()
		arg := p.check_string()
		p.gen(': "$arg"')
		if p.tok == .lpar {
			p.next()
			var_name := p.check_name()
			if !p.known_var(var_name) {
				p.error('unknown variable `$var_name`')
			}
			p.check(.rpar)
			p.genln('($var_name)')
		}
	}
	p.genln(');')
	p.check(.rcbr)
}