Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cgen: fix printing struct with thread field (fix #19282) #19302

Merged
merged 1 commit into from
Sep 8, 2023

Conversation

yuyi98
Copy link
Member

@yuyi98 yuyi98 commented Sep 7, 2023

This PR fix printing struct with thread field (fix #19282).

  • Fix printing struct with thread field.
  • Add test.
// Video is the object containing all the information needed for
// conversion to ascii.
struct Video {
pub:
	// path may be URL or path on local file system.
	path         string
	tmp_dir      string
	frame_count  int
	frame_format FrameFormat
pub mut:
	// TODO: once V fixes bug #19281 replace the type here
	// with `thread !`. And the return type on the corresponding
	// function that is spawned.
	extract_frames_thread thread string
}

enum FrameFormat {
	bmp
	jpg
}

fn (video Video) extract_frames() string {
	// try to extract frames os.execute()
	// if os.execute() returns with an exit
	// code other than 0, return an error.
	if true {
		return 'Failed to extract frames: os.execute() cmd output'
	}
	// do something else
	return ''
}

fn main() {
	mut video := Video{
		path: '/path/to/some/mp4'
		tmp_dir: '/tmp'
	}
	video.extract_frames_thread = spawn video.extract_frames()
	println(video)
}

PS D:\Test\v\tt1> v run .
Video{
    path: '/path/to/some/mp4'
    tmp_dir: '/tmp'
    frame_count: 0
    frame_format: bmp
    extract_frames_thread: thread(string)
}

@spytheman spytheman merged commit 92b551f into vlang:master Sep 8, 2023
48 checks passed
@yuyi98 yuyi98 deleted the fix_struct_with_thread_field branch September 8, 2023 05:43
spytheman added a commit to Spydr06/v that referenced this pull request Sep 8, 2023
* master: (128 commits)
  ci: update containers_ci.yml to not try to install libexecinfo-static, which is not present on the latest Alpine image
  checker: disallow module name duplicates in local names (vlang#18118)
  cgen: cleanup go_before_stmt(0) (vlang#19308)
  parser: disallow using `sql` as name (vlang#19298)
  fmt: cleanup fmt comments (vlang#19306)
  tests: supplement test cases in fixed_array_const_size_test.v (vlang#19303)
  vdoc: prevent main-content outline with certain devices / browsers (vlang#19304)
  cgen: fix printing struct with thread field (vlang#19302)
  vlib: replace macros that resolve to __builtin_bswapnn calls for tcc (vlang#19305)
  time: add `MMM` in the doc comment for parse_format() (vlang#19299)
  os: include sys/sysctl.h on FreeBSD to avoid implicit definition of sysctl function (vlang#19293)
  parser, transformer: fix transformer.infix_expr() and cleanup parse_types.v (related vlang#19269) (vlang#19276)
  fmt: simplify the processing logic for removing inline comments (vlang#19297)
  db.pg: allow postgres connection using service definitions (vlang#19288)
  builtin: use `libgc-threaded` on FreeBSD, to get the threaded version of libgc (vlang#19294)
  ci: test the pure V math versions without .c.v overrides on the CI too (vlang#19292)
  all: support `./v -exclude @vlib/math/*.c.v vlib/math/math_test.v`, for using the pure V math module implementation, without the .c.v overrides there. (vlang#19290)
  .cirrus.yml: change test_zip_modules -> test_zip_modules_script, so that the CI can recognise the new task name and execute it
  thirdparty/zip: properly include utime.h and set defines for FreeBSD (vlang#19285)
  math: fix pure v math.pow (vlang#19287)
  ...
Wertzui123 pushed a commit to Wertzui123/v that referenced this pull request Oct 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

printing struct with thread produces C error
2 participants